X-Puzzle

Xakep, номер #048, стр. 048-110-1


Ведущий: Иван Скляров

Sklyarov@real.xakep.ru

ВНИМАНИЕ! Где-нибудь в начале рубрики добавить следующий лозунг (желательно большИми буквами):

«ПРОЙДИСЬ ДЕБАГГЕРОМ ПО СВОИМ МОЗГАМ!»

Не стесняйся присылать мне свои ответы, даже если ты смог ответить всего на один пазл, я с интересом почитаю твои оригинальные решения. Ну, а имена героев, которые первыми правильно ответят на все вопросы, конечно же, будут опубликованы в журнале, прославятся на всю Россию (и не только) и навечно войдут в историю Х.

Но помни: вариант ответа засчитывается, как правильный, только если к нему приложено подробное и ВЕРНОЕ объяснение, почему выбран именно этот вариант, а не какой-либо другой.

ОТВЕТЫ К ПРЕДЫДУЩЕМУ ВЫПУСКУ X-PUZZLE

Ответ на пазл #1 «Письмо от Дани»

Секрет, который Даня поведал главреду, был следующий: "Грудь растет, как на дрожжах, если ее регулярно натирать спермой годовалого осленка!" (Кстати, по словам Дани, этот бред он взял из журнала "Птюч" (Хакер, ver. 04.01 (28), стр. 98)) Привожу анализ письма, который провел Синтез.

Т. к. известно, что Даня всегда вставляет в конце писем свое имя, то вполне очевидно, что последние четыре символа "битого" письма и есть его имя ("Даня"). Далее нужно было понять, что же общего между этими четырьмя символами. Если внимательно посмотреть на их ASCII-коды в шестнадцатеричном представлении, то можно заметить, что они представляют собой перевернутые ASCII-коды (циклически сдвинутые на четыре разряда в двоичном представлении) имени "Даня". Т. е., например, буква "H" (латинская) имеет код 48h, а ее перевернутое значение - 84h, что соответствует букве "Д", следующий символ имеет код 0A, а перевернутое значение - A0, что соответствует букве "а" и т. д. Таким образом, последовательно переворачивая коды каждого символа письма, получаем искомую фразу.

Ответ на пазл #2 «Оптимизация для ламера»

Я реально повеселился над ответами, которые мне присылали на этот пазл, каких только причудливых комбинаций я не увидел :). Но все оказалось значительно проще. Невооруженным взглядом видно, что в приведенном коде присутствуют так называемые "мертвые" строки. Понятно, что необходимо их все выудить из кода. Но куда их деть, если в условии задачи сказано, что ничего удалять нельзя? Не надо ничего придумывать, просто берем и помещаем эти строки в комментарий (первая строка). Т. е. оптимизированный код примет такой вид:

'13 чисел Фибоначчи POKE A(I),I:A(I)=A(1)+A(0) XY=A(I)+I*SQR(X+Y)/X*Y

DIM A(13)

X=0: Y=0

A(0) = 0: A(1) = 1

PRINT A(0); A(1);

FOR I = 2 TO 13

X = A(I-1)

Y = A(I-2)

A(I) = X + Y

PRINT A(I);

NEXT I

Ответ на пазл #3 «Языки программирования современности»

Языки кодинга, о которых шла речь, были следующие (по порядку):

1. Си

2. Perl

3. Visual C++

4. Delphi

5. Visual Basic

6. PHP

7. JAVA

8. Python

9. TCL

Ответ на пазл #4 «Загадочные строки»

Общее между приведенными строками то, что все они являются строками-висельниками, предназначенными для одной цели - повесить систему (Win 9x). Первую и третью можно просто ввести в поле Выполнить (Пуск -> Выполнить), а вторая является com-программой в шестнадцатеричном виде, которую можно ввести с помощью любого шестнадцатеричного редактора или ALT-последовательности (обо всем этом я уже неоднократно писал в Tips&Tricks).

Содержание  Вперед на стр. 048-110-2