Привет!
Выкладываем ответы на предложенную нами
ранее головоломку
для трезвомыслящих людей :).
Задание 1.
Ответ:
225787 449089253
Мы имеем последовательность
18 97 115 1973 1990 226877 ... ...
соответственно A  B   C   D    E     F     G   H
18 xor 97 = 115 
115 xor 1973 = 1990 
т.о. G = 1990 xor 226877 = 225787
18 * 115 - 97 = 1973 
115 * 1990 - 1973 = 226877
т.о. H = 1990 * 225787 - 226877 = 449089253
Задание 2.
Ответ: VERYG00DY0UDECRYPTEDIT
D2>D1+?§9''$28.1!#-
В HEX:
44 32 3E 44 31 19 18 2B 3F 15 39 
27 27 24 32 38 2E 31 21 1F 23 2D
На один шаг сложнее обычного askii сдвига. К коду каждого зашифрованного символа прибавляется
12 (hex) + индекс.
for (int i=0;i<22;i++)
cr[i]=cr[i]+18+i;
где cr[i] - зашифрованный символ
т.о.
44+12+0=57, (57 код символа "V")
32+12+1=46, (57 код символа "E")
3e+12+2=52, (57 код символа "R")
..
Задание 3.
WELL DONE!
В paint'е достаточно залить фон любым отличным от синего цветом.
Задание 4.
Приведу решение, которое нам прислал
победитель:
Самые интересные функции: 
========== cut from TrashPickUper ========== 
procedure CrackInfoFile(InfoFile: String; RFLst: TList); 
var rf: PRecycledFile; 
    MS: TMemoryStream; 
    S1: PChar; 
    m: pointer; 
    d,n: integer; 
begin 
  MS:=TMemoryStream.Create; 
  MS.LoadFromFile(InfoFile); 
  if (MS.Memory<>nil) and (MS.Size>20) then begin 
    m:=MS.Memory; 
    n:=integer((pointer(integer(m)+280))^); 
    case byte(m^) of 
      4: d:=280; 
      5: d:=800; 
    else 
      inc(integer(m),MS.Size); 
    end; 
    inc(integer(m),20); 
    while (integer(m)-integer(MS.Memory))<MS.Size do begin 
      S1:=m; 
      if S1^<>#0 then begin 
New(rf); 
rf.RealName:=S1; 
rf.TempName:=S1^+':\Recycled\'+'D'+S1^+ IntToStr(n)+ExtractFileExt(rf.RealName); 
rf.idx:=n; 
RFLst.Add(rf); 
end; 
inc(integer(m),d); 
inc(n); 
end; 
end; 
MS.Free; 
end; 
function RestoreFile(rf: PRecycledFile): boolean; 
var MS: TMemoryStream; 
    S1: PChar; 
    m: pointer; 
    d,n: integer; 
    InfoFile: String; 
begin 
  Result:=false; 
  InfoFile:=ExtractFilePath(rf.TempName)+'INFO2'; 
  MS:=TMemoryStream.Create; 
  MS.LoadFromFile(InfoFile); 
  if (MS.Memory<>nil) and (MS.Size>20) then begin 
    m:=MS.Memory; 
    n:=integer((pointer(integer(m)+280))^); 
    case byte(m^) of 
      4: d:=280; 
      5: d:=800; 
    else 
      inc(integer(m),MS.Size); 
    end; 
    inc(integer(m),20); 
    d:=(rf.idx-n)*d; 
    if d>0 then inc(integer(m),d); 
    if (integer(m)-integer(MS.Memory))<MS.Size then begin 
      S1:=m; 
      if S1^<>#0 then begin 
S1^:=#0; 
DeleteFile(InfoFile); 
MS.SaveToFile(InfoFile); 
ForceDirectories(ExtractFilePath(rf.RealName)); 
Result:=RenameFile(rf.TempName,rf.RealName); 
end; 
end; 
end; 
MS.Free; 
end; 
Задание 5.
Очень хорошо это задание описал Samvel.
Сначала  проверяется длина введенного  пароля,  которая  должна  составлять 14 символов.
Затем  из  введенного  номера  последовательно  составляются  и сравниваются  5 пар  результатов: результат1 и результат2.
I, II, III, IV, V - номера пар
Результат1  I пары получается  следующим  образом:
2 символ  xor-тся с 1-м  (II пара - 3-й со 2-ым; III пара - 4-й с
3-им; IV пара 5-й с 4-ым, V пара 6-й с 5-ым). К результату прибавляется  1, (II пара - 2, III - 3, IV - 4, V - 5). 
Полученная  сумма  складывается  с  кодом  7-го  символа. 
Результат 2  I пары  получается  путем: код  8 символа складывается
с кодом 9-го символа (II пара - с кодом 10-го, III пара - 11-го ,IV пара - 12-го ,V пара- 13-го).
Сравниваются Результат 1 и результат 2  каждой  пары.
Если  все  10 результатов  попарно  равны,  то
"Correct". Например,  пароли: 230222g4588784, 111111a1123451 
И кейген на Рascal'е, от Antoha.
var 
 c,i,j : word; 
 fl : boolean; 
 str : string; 
begin 
 {-------------- et vmesto clrcsr() iz crt modula a to mojet glukat} 
 asm 
  mov ax,3 
  int 10h 
 end; 
 writeln('Keygen by ant0xa'); 
 writeln('How many keys ? [1..65535]'); 
 readln(c); 
 randomize; str[0]:=#14;j:=1; 
 while j<=c do 
  begin 
   str[7]:=chr(random(74)+48); str[8]:=str[7]; 
   str[14]:=chr(random(74)+48); 
   for i:=1 to 6 do 
    str[i]:=chr(random(74)+48); 
   for i:=1 to 5 do 
    str[i+8]:=chr(ord(str[i+1]) xor ord(str[i]) + i); 
   fl:=true; 
   for i:=1 to 14 do 
    if (ord(str[i])<48) or (ord(str[i])>122) then 
     begin 
      fl:=false; 
      break; 
     end; 
   if fl then 
    begin 
writeln('Key ',j,' is: ',str); 
j:=j+1; 
end; 
end; 
readln; 
end. 
Победил в нашем конкурсе  Kowdle -
он единственный решил все  задания.
Просим его отписать на xa@real.xakep.ru
и мы подарим ему какую-нибудь важную
ценность 🙂 Так же хочется отметить: Samvel -
занял второе место, Dcr и конечно DigitalScream :). 
Надеемся, что вам понравилось, пишите ваши
отзывы о головоломке сюда, в комментарии.