Рубрика 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("%d\n", $ sum); exit(0); } Ответ на пазл №4 «Хакерский ребус» Билл Гейтс (Bill гей + тс-с!) ПЕРВЫЙ ПАЗЛ «Mr. Smith» Мистер Андерсон работал программистом в большой трансатлантической компании, которая выпускала на рынок различные клиент-серверные приложения. Никто в компании не догадывался, что мистер Андерсон ведет двойную жизнь: днем он программист в большой компании, а ночью – опасный хакер, известный под кличкой «Oen». Однако руководство компании стало подозревать мистера Андерсона в том, что он умышленно вносит в программный код ошибки, снижающие безопасность программных продуктов. В связи с чем в компанию был нанят специалист по безопасности экстра-класса мистер Смит, главной задачей которого стала проверка кода на безопасность. После первой же проверки мистер Смит нашел в коде мистера Андерсона потенциально опасную функцию: |