X-Puzzle
Ведущий: Иван Скляров
Xakep, номер #057, стр. 057-110-1
Sklyarov@real.xakep.ru
«ПРОЙДИСЬ ДЕБАГГЕРОМ ПО СВОИМ МОЗГАМ!»
Не стесняйся присылать мне свои ответы, даже если ты смог ответить всего на один пазл, я с интересом почитаю твои оригинальные решения. Ну а имена героев, которые первыми правильно ответят на все вопросы, конечно же, будут опубликованы в журнале, чем прославятся на всю Россию (и не только) и навечно войдут в историю Х. Приз за нами не заржавеет ;).
Но помни: в большинстве случаев вариант ответа засчитывается как правильный, только если к нему приложено подробное и ВЕРНОЕ объяснение, почему выбран именно этот вариант, а не какой-либо другой.
ОТВЕТЫ К ПРЕДЫДУЩЕМУ ВЫПУСКУ X-PUZZLE
Ответы к первому этапу «Xword»
1. Smurf
2. Kernighan
3. Usenet
4. XSS
5. apropos
6. Ramen
7. tracert
8. Hobbit
9. undef
10. Condor
Ответ ко второму этапу «Зашифрованная фраза»
Зашифрованное выражение было следующим: «I am a hacker, and this is my manifesto». Зашифровано оно было следующим образом: первый символ сдвигается в кодировке ASCII на -1 позицию, второй символ на +2 позиции, третий на -3 позиции, все это повторяется в цикле до конца строки.
Ответ к третьему этапу «Промежуточное звено»
Т.к. автором строк из предыдущего этапа является «The Mentor» (Phrack 07-03), то, применив обычный XOR с ключом «mentor», получим сообщение:
«Взять слово, полученное на первом этапе, в качестве ключа и через оператор "побитовое OR" зашифровать найденную фразу из второго этапа, затем сложить коды всех полученных символов - это и будет конечный ответ».
Единственная сложность заключалась в кодировках: шифр показан в ASCII cp866, а кодирование происходило в ANSI 1251.
Т.к. расшифрованное сообщение является заданием на четвертый этап, то, проведя указанные простейшие операции, получим конечный ответ 4432.
ПЕРВЫЙ ПАЗЛ Оптимизация «по самое не балуйся»
Ниже ты видишь кусок кода на языке Си. Твоя задача сделать его как можно меньше, но чтобы при этом он не потерял своей функциональности.
Учитываться будет не количество строк, а количество символов ;).
if (!(A<=0) && !(B>=0))
n = A-((A>>6)<<6);
else if (!A && B!=0)
n = (5*A*B)%4;
else
n = A & 0x3F;
ВТОРОЙ ПАЗЛ «Художества на HTML #2»
Если тебе уже довелось рисовать псевдоамериканский флаг (см. X-Puzzle в #51), то сейчас будет значительно проще. Задача аналогичная: нарисовать на «чистом» HTML флаги Японии, Турции и Израиля. При этом нельзя включать графику (gif, jpg, png и пр.), а также подключать какие бы то ни было скрипты и апплеты. Размеры и положение флагов на странице значения не имеют.
ТРЕТИЙ ПАЗЛ «Двуязычная программа»
Эта задача для гуру Перла и Си ;).
Ниже показаны две программы на языках С и Perl, которые делают одно и то же, а именно: суммируют любое количество чисел, введенных в командной строке, и выдают результат.
Твоя задача написать двуязычную программу (С&Perl), которая делала бы то же самое. Т.е. программа должна без всяких изменений (менять можно только расширение исходного файла .pl или .с) работать как в Си, так и в Perl.
Код на Си:
#include <stdio.h>
#include <stdlib.h>