Вверх ↑
Разработчик
Ответов: 26200
Рейтинг: 2137
#1: 2010-04-21 12:22:53 ЛС | профиль | цитата
Tad писал(а):
Не проходит тест на волшебном слове проверки

А вообще-то, там небольшая неточность в коде , которую я потом убрал



Add(MainForm,8227255,273,315)
{
Width=201
Height=105
Position=1
}
Add(InlineCode,11935733,455,252)
{
@Hint=#8:Standart|
WorkPoints=#5:doPos|
EventPoints=#5:onPos|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|21: onPos:THI_Event;|5: |50: procedure doPos(var _Data:TData; Index:word);|5: end;|0:|14:implementation|0:|28:procedure THiAsmClass.doPos;|5:begin|105: _hi_onEvent(onPos,PosEx('колокол','колоколоколоколоколоколоколоколоколоколоколоколоколоколоколокол',3));|4:end;|0:|4:end.|
link(onPos,14267925:doText,[])
AddHint(34,-36,55,13,@Hint)
}
Add(For,10753889,406,252)
{
@IsLib=True
link(onEvent,11935733:doPos,[])
link(onStop,3504164:doStop,[(450,265)(450,253)(345,253)(345,265)])
link(End,10609727:Var2,[])
}
Add(For,4107591,406,315)
{
elink(10753889)
link(onEvent,5889051:doPos,[])
link(onStop,13453645:doStop,[(450,328)(450,316)(345,316)(345,328)])
link(End,10609727:Var1,[(419,275)(410,275)(410,236)])
}
Add(Button,14588975,273,252)
{
Left=5
Top=35
Caption="test"
link(onClick,14186092:doEvent1,[])
}
Add(Hub,14186092,322,252)
{
link(onEvent1,3504164:doStart,[])
link(onEvent2,13453645:doStart,[(346,265)(346,321)])
}
Add(TimeCounter,3504164,357,252)
{
link(onStart,10753889:doFor,[])
link(onStop,3014420:doText,[(396,265)(396,272)])
}
Add(TimeCounter,13453645,357,315)
{
link(onStart,4107591:doFor,[])
link(onStop,5385417:doText,[(397,328)(397,314)])
}
Add(Edit,14267925,504,252)
{
Left=70
Top=10
}
Add(Edit,6078964,504,315)
{
Left=70
Top=35
}
Add(Edit,3014420,553,266)
{
Left=130
Top=10
Text="time1"
}
Add(Edit,5385417,553,308)
{
Left=130
Top=35
Text="time2"
}
Add(InlineCode,5889051,455,315)
{
@Hint=#11:Boyer-Moore|
WorkPoints=#5:doPos|
EventPoints=#5:onPos|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|21: onPos:THI_Event;|5: |50: procedure doPos(var _Data:TData; Index:word);|5: end;|0:|14:implementation|0:|72:function PosEx2(const SubStr, S: string; Offset: Cardinal = 1): Integer;|3:var|22: Ps, lp, i : Integer;|32: BMT: array[0..255] of integer;|5:begin|23: lp := Length(SubStr);|3: |22: for i := 0 to 255 do|21: BMT[i] := lp; |25: for i := lp downto 1 do|36: if BMT[ord(SubStr[i])] = lp then|36: BMT[ord(SubStr[i])] := lp - i;|0:|24: Ps := Offset + lp - 1;|0:|14: Result := 0;|2: |26: while Ps <= Length(S) do|31: if SubStr[lp] <> S[Ps] then|32: Ps := Ps + BMT[ord(S[Ps])]|8: else|29: for i := lp downto 1 do|43: if SubStr[i] <> S[Ps - lp + i] then|13: begin|23: Ps := Ps + 1;|16: Break;|11: end|26: else if i = 1 then|13: begin|32: Result := Ps - lp + 1;|15: Exit;|12: end;|4:end;|0:|28:procedure THiAsmClass.doPos;|5:begin|106: _hi_onEvent(onPos,PosEx2('колокол','колоколоколоколоколоколоколоколоколоколоколоколоколоколоколокол',3));|4:end;|0:|4:end.|
link(onPos,6078964:doText,[])
AddHint(51,46,75,13,@Hint)
}
Add(Edit,15250553,413,182)
{
Left=10
Top=10
Text="100000"
}
Add(GetDataEx,10609727,413,231)
{
link(Data,15250553:Text,[])
}

В этом случае, с такими словами, быстродействие немного падает, про это везде написано, что это выдуманная проверка на "нечистые" слова, вариант появления таких случаев очень и очень низкий

Tad писал(а):
длинна результирующих кодов, как я уже писал, АЖ ! на 36 байт

В сравнении с чем

Tad писал(а):
тоже критерий

Чей критерий
И нафиг твоя компактность кому впала, ты что, проги для микропроцессоров пишишь с ограниченной паматью

И напоследок --
Tad писал(а):
CopyEnd(s,offset)
не хорошее решение, сможешь написать без него

------------ Дoбавленo в 12.22:
Tad писал(а):
посьба - выкладывать коды в свернутом виде (или ХХХХ.txt или ХХХХ.sha)

Не слищком уж и большая портянка, зато, править можно, если ошбки найдутся. А файлы ХХХХ.txt или ХХХХ.sha у меня, в Опере, не читаются нормально
карма: 22

0