Рубрика X-Puzzle#12

Иван Скляров

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

Sklyarov@real.xakep.ru

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

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

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

Ответ на пазл №1 Оптимизация «по самое не балуйся»

Возможно, кому-то это покажется странным, но код можно сократить до следующего:

n=A?A&63:0;

Комментарии: n = A-((A>>6)<<6) и n = A & 0x3F делают одно и то же (A&63), а n = (5*A*B)%4 всегда ноль.

Ответ на пазл №2 «Художества на HTML #2»

Японский флаг:

<body bgcolor=#000000>

<table bgcolor=#FFFFFF border=0 width=150 height=90 cellspacing=0 cellpadding=0>

<tr><th>

<font face=Webdings color=#FF0000 size=7> n </font>

</tr></th>

</table>

</body>

Турецкий флаг:

<body bgcolor=#000000>

<table bgcolor=#FF0000 border=0 width=150 height=90 cellspacing=0 cellpadding=0>

<tr><th>

<font face=Wingdings color=#FFFFFF size=7> Z </font>

</tr></th>

</table>

</body>

Израильский флаг:

<body bgcolor=#000000>

<table bgcolor=#FFFFFF border=0 width=150 cellspacing=0 cellpadding=0>

<tr><td height=10></tr></td>

<tr> <td bgcolor=#00008B height=10></tr></td>

<tr><th>

<font face=Wingdings color=#00008B size=7> Y </font>

</tr></th>

<tr><td bgcolor=#00008B height=10></tr></td>

<tr><td height=10></tr></td>

</table>

</body>

Ответ на пазл №3 «Двуязычная программа»

К сожалению, из-за отсутствия свободного места я не могу расписать в деталях, как работает данная двуязычная программа. Если что-то непонятно, спрашивай мылом.

#include <stdio.h>

#include <stdlib.h>

#define $ /* */

#define ARGV argv

#define if($x) int main(int argc, char *argv[])

#define $start 1

#if PERL

sub atoi { $_[0] }

$ argc=@ARGV;

$ start=0;

$ x=1;

#endif

if($x)

{

int $ sum;

int $ i;

$ sum=0;

for ( $ i = $start; $ i < $ argc ; $ i++) {

$ sum += atoi ($ ARGV [$ i]);}

printf("%dn", $ sum);

exit(0);

}

Ответ на пазл №4 «Хакерский ребус»

Билл Гейтс (Bill гей + тс-с!)

ПЕРВЫЙ ПАЗЛ «Mr. Smith»

Мистер Андерсон работал программистом в большой трансатлантической компании, которая выпускала на рынок различные клиент-серверные приложения. Никто в компании не догадывался, что мистер Андерсон ведет двойную жизнь: днем он программист в большой компании, а ночью – опасный хакер, известный под кличкой «Oen». Однако руководство компании стало подозревать мистера Андерсона в том, что он умышленно вносит в программный код ошибки, снижающие безопасность программных продуктов. В связи с чем в компанию был нанят специалист по безопасности экстра-класса мистер Смит, главной задачей которого стала проверка кода на безопасность. После первой же проверки мистер Смит нашел в коде мистера Андерсона потенциально опасную функцию:

Содержание  Вперед на стр. 058-110-2
ttfb: 3.0641555786133 ms