Мой квест был опубликован трое суток назад, так что можно переходить к разбору. По моим оценкам, большинство желающих уже поломали над заданиями голову вволю, но если вы хотите попробовать еще — не заглядывайте под кат, чтобы не испортить удовольствие :-)
Один из самых частых отзывов на мои паззлы и загадки — ой, классно, но очень уж сложно, нам бы что попроще… Поэтому первые несколько уровней я старалась делать простыми и/или классическими, чтобы не остужать интерес игроков с самого начала. Затем шло несколько уровней, основанных на моих старых публикациях на Хабре, задуманные как бонус тем, кто внимательно изучит мои труды :-) И наконец, два последних уровня были самыми сложными — к их темам я раньше не обращалась никогда. Мои поздравления тем, кто прошел квест сам или с подсказками — к сожалению, я не заложила никакого способа оценки количества таких людей. Всего скачиваний архива с квестом было более 20000.
В наше время сложно считать что-то, зашифрованное в QR-код, надежно спрятанным, поэтому сообщение в коде гласит «think out of the box. seriously. it's level zero but it's not as easy as just finding a QR-reader :-)». Трактовать это как подсказку можно двумя способами: буквальным (т.е. смотреть не на сам код, а на часть изображения снаружи) и переносным (не ограничиваться стандартными подходами, а поискать что-нибудь поинтереснее). Настоящий пароль был спрятан в верхнем поле изображения (над кодом), записанный буквами чуть-чуть другого цвета, чем фон (классический прием в квестах этого жанра, но не все с ним знакомы). Чтобы найти его, можно было поиграться с картинкой в каком-нибудь графическом редакторе, например, применить invert или color equalize, или просто залить область текста, содержащую верхний левый пиксель, другим цветом.
Пароль (вместе с указующим на него префиксом pwd:) составляется из первых символов строк текста. Текст о pbrain был отвлекающим маневром, и, смею заметить, он удался — очень много игроков всерьез задумались о том, как его можно интерпретировать в этом диалекте, несмотря на то, что командами будут всего несколько символов текста.
Еще один классический прием в таких квестах: единственная особенность изображения — цвет фона 0xDEC0DE; после нескольких попыток выясняем, что вводить его нужно без префикса и в нижнем регистре.
Текст этого уровня был очень похож на код на Brainfuck. Собственно, если заменить символы-некоманды на точки, текст станет кодом, который выведет ехидное сообщение «brainfuck is not involved. that would be too obvious, er? try something easier. like… counting?», намекающее на то, что нужно что-нибудь посчитать. В этот момент любители сложностей задумались о том, как бы преобразовать в что-нибудь информативное символы-некоманды. На самом же деле код, как и на уровне 1, был полностью отвлекающим маневром — имело значение не содержание текста, а только его форма, а точнее, количества символов в каждой строке. Длины строк 112, 119, 100, 58… были ASCII-кодами символов, которые вместе и образовывали пароль.
В сентябрьской статье Необычные поздравления с днем программиста — 2 упоминался графический язык Piet. Разноцветные полоски с преобладанием белого на черном фоне характерны для программ на Piet, сгенерированных автоматически — несколько замечательных примеров приведено на сайте языка. Когда язык уже определен, остальное становится делом техники: как минимум, чтобы запустить программу, ее верхний левый угол должен быть не черным. Покрутив картинку так и эдак, выясняем, что достаточно было отобразить ее зеркально относительно вертикальной оси и запустить.
Помните, на день числа Пи я писала статью Пи в языках программирования? Этот уровень как раз и использовал один из таких языков, Pi. У этого языка есть даже готовый интерпретатор на Python, так что задача сводилась к опознанию языка и поиску и запуску интерпретатора. Конечно, вручную интерпретировать его не надо было, равно как и создавала уровень я не вручную :-)
Этот уровень был самым трудоемким для меня — с идеей программы на Befunge, в которой будет спрятана другая, я вожусь уже месяца четыре и вот только сейчас довела ее до ума. Если запускать эту программу в интерпретаторе без режима отладки, она выведет просто «the princess is in another castle». Но если догадаться включить отладку, чтобы проследить за движением указателя инструкций по полю команд, будет заметно, что определенную область (начинающуюся на двух девятках во второй строке) он обходит стороной. Если аккуратно выделить эту область и запустить ее отдельно, как раз и получим пароль. Как вариант, можно заменить первый символ < во второй строке на > — тогда основная программа переключится на выполнение «скрытых» команд, и после начала явного сообщения выведет скрытое.
Этим уровнем я горжусь необычайно — он совершенно, ну ни капельки не связан с языками программирования! Я совершенно случайно наткнулась на красивое слово Hexakosioihexekontahexaphobia (если по слогам, это фобия числа 666), отправилась в Википедию посмотреть, что о нем пишут, потом перешла по ссылке и оказалась на странице Greek number notation. Это нельзя было не использовать! Для создания самого уровня я использовала более подробную статью Ionian numeration. В итоге картинка интерпретировалась как греческая запись большого числа, которое и было паролем.
Восьмой круг квестового ада… Ну конечно, это Malbolge, нереально суровый эзотерический язык, для написания программ на котором приходится писать программы-генераторы. По слухам, на нем еще не удалось реализовать ни одного цикла или условного перехода; даже код «99 бутылок пива» на Malbolge, представленный некоторое время назад, выводит текст песни без использования циклов. Впрочем, вывод короткого сообщения сравнительно несложен. На этом уровне нужно было всего лишь опознать язык (что не так-то просто, если учесть, что обычно он упоминается только как «тот ужасный язык», без примеров кода) и найти и запустить интерпретатор (можно авторский, благо он сохранился).
Один из самых частых отзывов на мои паззлы и загадки — ой, классно, но очень уж сложно, нам бы что попроще… Поэтому первые несколько уровней я старалась делать простыми и/или классическими, чтобы не остужать интерес игроков с самого начала. Затем шло несколько уровней, основанных на моих старых публикациях на Хабре, задуманные как бонус тем, кто внимательно изучит мои труды :-) И наконец, два последних уровня были самыми сложными — к их темам я раньше не обращалась никогда. Мои поздравления тем, кто прошел квест сам или с подсказками — к сожалению, я не заложила никакого способа оценки количества таких людей. Всего скачиваний архива с квестом было более 20000.
Уровень 0.
В наше время сложно считать что-то, зашифрованное в QR-код, надежно спрятанным, поэтому сообщение в коде гласит «think out of the box. seriously. it's level zero but it's not as easy as just finding a QR-reader :-)». Трактовать это как подсказку можно двумя способами: буквальным (т.е. смотреть не на сам код, а на часть изображения снаружи) и переносным (не ограничиваться стандартными подходами, а поискать что-нибудь поинтереснее). Настоящий пароль был спрятан в верхнем поле изображения (над кодом), записанный буквами чуть-чуть другого цвета, чем фон (классический прием в квестах этого жанра, но не все с ним знакомы). Чтобы найти его, можно было поиграться с картинкой в каком-нибудь графическом редакторе, например, применить invert или color equalize, или просто залить область текста, содержащую верхний левый пиксель, другим цветом.
Уровень 1.
Пароль (вместе с указующим на него префиксом pwd:) составляется из первых символов строк текста. Текст о pbrain был отвлекающим маневром, и, смею заметить, он удался — очень много игроков всерьез задумались о том, как его можно интерпретировать в этом диалекте, несмотря на то, что командами будут всего несколько символов текста.
Уровень 2.
Еще один классический прием в таких квестах: единственная особенность изображения — цвет фона 0xDEC0DE; после нескольких попыток выясняем, что вводить его нужно без префикса и в нижнем регистре.
Уровень 3.
Текст этого уровня был очень похож на код на Brainfuck. Собственно, если заменить символы-некоманды на точки, текст станет кодом, который выведет ехидное сообщение «brainfuck is not involved. that would be too obvious, er? try something easier. like… counting?», намекающее на то, что нужно что-нибудь посчитать. В этот момент любители сложностей задумались о том, как бы преобразовать в что-нибудь информативное символы-некоманды. На самом же деле код, как и на уровне 1, был полностью отвлекающим маневром — имело значение не содержание текста, а только его форма, а точнее, количества символов в каждой строке. Длины строк 112, 119, 100, 58… были ASCII-кодами символов, которые вместе и образовывали пароль.
Уровень 4.
В сентябрьской статье Необычные поздравления с днем программиста — 2 упоминался графический язык Piet. Разноцветные полоски с преобладанием белого на черном фоне характерны для программ на Piet, сгенерированных автоматически — несколько замечательных примеров приведено на сайте языка. Когда язык уже определен, остальное становится делом техники: как минимум, чтобы запустить программу, ее верхний левый угол должен быть не черным. Покрутив картинку так и эдак, выясняем, что достаточно было отобразить ее зеркально относительно вертикальной оси и запустить.
Уровень 5.
Помните, на день числа Пи я писала статью Пи в языках программирования? Этот уровень как раз и использовал один из таких языков, Pi. У этого языка есть даже готовый интерпретатор на Python, так что задача сводилась к опознанию языка и поиску и запуску интерпретатора. Конечно, вручную интерпретировать его не надо было, равно как и создавала уровень я не вручную :-)
Уровень 6.
Этот уровень был самым трудоемким для меня — с идеей программы на Befunge, в которой будет спрятана другая, я вожусь уже месяца четыре и вот только сейчас довела ее до ума. Если запускать эту программу в интерпретаторе без режима отладки, она выведет просто «the princess is in another castle». Но если догадаться включить отладку, чтобы проследить за движением указателя инструкций по полю команд, будет заметно, что определенную область (начинающуюся на двух девятках во второй строке) он обходит стороной. Если аккуратно выделить эту область и запустить ее отдельно, как раз и получим пароль. Как вариант, можно заменить первый символ < во второй строке на > — тогда основная программа переключится на выполнение «скрытых» команд, и после начала явного сообщения выведет скрытое.
Уровень 7.
Этим уровнем я горжусь необычайно — он совершенно, ну ни капельки не связан с языками программирования! Я совершенно случайно наткнулась на красивое слово Hexakosioihexekontahexaphobia (если по слогам, это фобия числа 666), отправилась в Википедию посмотреть, что о нем пишут, потом перешла по ссылке и оказалась на странице Greek number notation. Это нельзя было не использовать! Для создания самого уровня я использовала более подробную статью Ionian numeration. В итоге картинка интерпретировалась как греческая запись большого числа, которое и было паролем.
Уровень 8.
Восьмой круг квестового ада… Ну конечно, это Malbolge, нереально суровый эзотерический язык, для написания программ на котором приходится писать программы-генераторы. По слухам, на нем еще не удалось реализовать ни одного цикла или условного перехода; даже код «99 бутылок пива» на Malbolge, представленный некоторое время назад, выводит текст песни без использования циклов. Впрочем, вывод короткого сообщения сравнительно несложен. На этом уровне нужно было всего лишь опознать язык (что не так-то просто, если учесть, что обычно он упоминается только как «тот ужасный язык», без примеров кода) и найти и запустить интерпретатор (можно авторский, благо он сохранился).