Что-то я давно ничего не писал. Напишу-ка я про то, как мы поучаствовали в Galactic Puzzle Hunt
Я люблю головоломки. Что я люблю больше головоломок - так это игры, построенные на головоломках. Еще лучше - если в эти игры можно играть командно, соревнуясь с кем-то другим. Сто лет тому назад я с громадным удовольствием участвовал в AutoQuest и подобных ему мероприятиях в Киеве, но после переезда в Лондон случился перерыв.
И вот весной этого года коллеги пригласили меня поучаствовать с ними в
MIT Mystery Hunt, это было безумно интересно (и заслуживает отдельного рассказа).
Одна из команд, регулярно участвующих в MIT Mystery Hunt, делает свой puzzle hunt. Он длится целую неделю, не требует личного присутствия, и называется
Galactic Puzzle Hunt. Воспоминания о MIT Mystery Hunt были еще совсем свежи, и мы с
женой тут же решили участвовать.
Я попытался привлечь кого-то из коллег, и в результате с нами было еще 3 человека, но из-за стечения обстоятельств все они были без опыта подобных мероприятий и среди них не было никого из "MIT-шной" команды.
Приборы и материалы
Правила простые - у тебя есть логин на сайте соревнования, в час "Ч" там становятся доступны задачи. Ты решаешь их, отсылаешь ответ (строку латинских символов) через веб-форму и в случае правильного ответа тебе открываются новые задачи.
Объединяющей темой этого puzzle hunt был "Great Galactic Bake-Off", поэтому совершенно не удивительно, что изначально на странице было 0 задач и одна громадная картинка печенья и надпись "Next puzzle unlocks at 200 cookies". Все это очень напоминало
Cookie Clicker и мы принялись кликать :)
Счетчик печений перевалил за 200, мы получили первую задачу и надпись "Next puzzle unlocks at 2000 cookies" и "Prize for next solve is 2M cookies". Стало понятно, что вручную далеко не уедешь, но мы вручили компьютер младшему ребенку и он бодро накликал нам 2000 печенек и еще одну задачу. Следующий рубеж был в 20К печенек, поэтому мы бросили кликать и стали читать
правила. Выходило так, что для победы надо было набрать миллиард(!) печенек, так что оставалось только надеяться, что в дальнейшем призы за победу будут более щедрыми.
За исключением меня и жены все остальные участники нашей команды были территориально разобщены, поэтому для координации у нас был Slack. Выбран он был из-за того, что мне понравилось использовать его в ходе MIT Mystery Hunt - для каждой задачи заводился отдельный канал в Slack, в канал добавлялся расшаренный документ Google Sheets, и все решение делалось уже в нем.
Вообще Google Sheets был одним из основных инструментов, даже если задачи были полностью текстовыми. В любой задаче нужно было так или иначе возиться с текстом - брать первые/последние буквы, сортировать, читать задом наперед и т.п., и в Sheets это делать на порядок удобнее. Кроме того, у Sheets есть killer feature - в него можно добавлять свои функции, написанные на яваскрипте, и мы сделали себе кучу функций вида "выбрать гласные", "выбрать согласные", "отсортировать символы в строке", "пересечь две строки как множества" и так далее.
Впрочем, обо все по порядку.
The Wepp Perflontus Bake Off В этой задаче надо было реконструировать рецепты, частично переведенные с "инопланетного" на английский и испечь печенье, добавляя компоненты рецепта по одному в "печку". У нас было целых два любителя что-то приготовить, и поэтому идентификация рецептов прошла довольно споро, и печенье сделать было не очень тяжело. Но затем нам надо было сделать Wepp Jarpagom, и тут мы забуксовали, так как слово Jarpagom было только в одном рецепте, название которого было похоже на "Jarpagom pie" :)
Тут мы застряли где-то на час, пока внимательное чтение примечаний к меню не навело нас на мысль, что это праздничный pie, причем не новогодний (не mince pie). Где-то через минут 15 подобрался Pumpkin pie и ответ Great Pumpkin.
Try and EatЭту задачу мы решили задом наперед :) Идея была в том, что ты отгадываешь два списка трехбуквенных слов, а потом слова из одного списка "едят" слова из другого списка, и PIN, "съедающий" DOG, дает DOPING. Для проверки своих ответом есть еще один список подсказок посложнее, дающий шестибуквенные слова.
Мы же начали с того, что решили все шестибуквенные слова, потом решили один список трехбуквенных, потом обнаружили, что можно "вычитать" трехбуквенные слова из шестибуквенных и остаток тоже будет словом! По задумке организаторов финальный ответ получается из списка шестибуквенных слов, но у нас-то этот список был исходным пунктом, а не результатом, так что мы довольно долго протупили, прежде чем вычитать из первых букв шестибуквенных слов заветное "cloud place eats hotel" и отгадать "skinny"
An Eccentric CrosswordЭту задачу решил мой коллега Chen, так что я скажу только, что это был кроссворд, в котором кроме слов по вертикали и горизонтали были слова "по орбитали", вот так:
Math 101Эта задача мне очень понравилась. Ты решаешь multiple-choice тест по математике, ответы трактуешь как двоичные числа, которые кодируют буквы из алфавита по их номеру. Получаешь слово "HEXADECIMAL" и теперь тебе нужно решить тест еще раз, но в этот раз все числа читать как шестнадцатеричные, причем "A)21, B)31, ..." означают на самом деле 0xA21, 0xB31 и т.д.
Тут я подложил нам громадную свинью, так как в тесте был вопрос "какие из этих чисел в восьмеричной системе являются палиндромами?", и я перевел числа в восьмеричную систему прямо в таблице, где мы записывали ответы. Когда же мы начали решать тест еще раз, читая числа как шестнадцатеричные, я уже об этом забыл. В результате в этом вопросе у нас прочитались совершенно неверные числа и вышло так, что правильных ответов вроде как и нет. До перепроверки у меня дошли руки только на следующий день :(
Emotion PicturesВ этой задаче надо было идентифицировать фильмы по краткому пересказу их сюжета, записанному в emoji, вот это например Scary Movie:
Фильмы мы опознали довольно быстро, и героев (обозначенных знаками вопроса) идентифицировали тоже довольно резво, а потом застряли. Никто из нас не знал, что существует фильм
The Emoji Movie (у которого на imdb рейтинг 3.1(!)), и только
шальной запрос в google вывел нас на него. Как и в Math 101, задача была по сути решена быстро, но финальный шаг дался только на следующий день.
Stackables Мы не поленились нарезать из бумаги два комплекта этажей лабиринта и сложить их независимо друг от друга. И не зря - в процессе сверки было найдено несколько лаж. Дальше надо было зарисовать "ваш путь, вид сбоку", и по задумке авторов надо было рисовать путь линией. Мы же рисовали его, закрашивая клеточки в sheets, и в результате наш путь получился таким толстым, что мы чуть не пропустили слово, которое в результате нарисовалось :)
Sequencing Теперь я знаю много лишнегонужного и полезного про секвенсирование генов :) Вместо того, чтобы взять BLAS, мы, как настоящие тормоза первооткрыватели, сделали все вручную. Не с первого раза. И только со сторонней помощью :)
В промежуточных результатах после первого шага решения на видном месте лежала фраза
NEEDLEMAN WUNSCH ALIGNMENT, но поскольку мы раньше этих фамилий не слыхали, то ссылку пропустили :(
Interstate Commerce Тут моя жена показала себя человеком действия, а я оказался ленивцем томной неги :) Я подумал о том, что надо найти места пересечения шоссе американской interstate system, но я не нашел удобной карты или сайта для этого и забил. А моя жена сделала карту в google maps, нарисовала на ней все пересечения и шоссе, границы штатов, и выписала штаты, через которые этот маршрут ведет.
Мне осталось прийти с работы вечером на следующий день, увидеть решение и офигеть :)
Parlor Я ухитрился увидеть faux pas в обведенных лапках лисы (fox paws) до того, как это сделали англичане :) Дальше мы довольно бодро разгадали все ребусы, кроме багета (bag wet), на который ушло довольно много времени. Grand prix нам не дался вообще, но задача решилась и без него.
Everything and More
Суть задачи такова: найдите ответы на список вопросов. Долго тупите над ответами. В конце-концов кто-то заметит, что среди них слишком много аббревиатур и редких букв. Вычеркните из ответов полный английский алфавит, а из остатков сложите новое слово. Сделайте так шесть раз, для шести списков вопросов. Возьмите получившиеся шесть слов, вычеркните из них полный алфавит, а из остатков получится финальный ответ.
Тут нам и пригодилась возможность писать свои функции для sheets - мы сделали функции "какие буквы остаются, если вычеркнуть алфавит" и "каких букв не хватает до алфавита" и после этого довольно быстро разобрались с начальными вопросами. Затем мы застряли на том, что финальные шесть слов никак не хотели покрывать алфавит - все время какие-то буквы оставались пропущенными. В конце-концов Чен написал программу, которая перебирает списки синонимов для всех шести слов, и ищет набор, который покроет-таки алфавит. Увы, ответ таким образом найден не был, и мы читали и перечитывали код несколько раз, пока кто-то не заметил, что у "facing (2, abbr.)" кроме "op" может быть еще решение "vs", и тут наконец паззл сложился.
Trigger Еще одна задача, которую мы решили наоборот. В тексте было просто-таки уникальное количество намеков на тригонометрию, но мы их все пропустили. Только начав решать задачу как кроссворд мы заметили, что слишком много слов начинаются на "cos" и "tan". "Ааааа!", - сказали мы - "вот к чему был Trigger в названии и SECret COTs в описании, это был намек на тригонометрию, могли бы и сообразить". Надо наверное как-то превратить слова в числа и посчитать значения тригонометрических функций от этих чисел. Вот, например, короткое слово "tank", которое в такой интерпретации будет tan(k). Берем номер буквы "k" в алфавите (11), получаем -225.95..., а структура места для ответа прямо намекает, что должно быть три знака до запятой и много знаком после. Но это получается только в том случае, если это 11 радианов, а не 11 градусов. "Аааааа!", - сказали мы - "вот что значит pretty rad в условии. Могли бы и сообразить".
Дальше мы стали думать, как переводить длинные слова в числа и перебрали какое-то невероятное количество способов, пока случайно не "выстрелило" произведение номеров букв в алфавите. "Аааа!", - сказали мы, - "вот что означало when they go into production, могли бы и догадаться".
Последним сюрпризом было то, что один из вопросов звучал как "dissection puzzles" (во множественном числе) и ответом должен был быть "tangrams", а мы взяли "tangram", из-за чего у нас получилось неправильное число в ответе и совершенно неподходящая буква.
Consolation PrizeПосле решения предыдущей задачи у нас должно было быть достаточно "печенек" для того, чтобы получить следующую задачу. Вместо этого у нас появилась ссылка на "утешительный приз", а по почте всем нам пришло письмо: "Всем спасибо, команда COOKIECOOKIECOOKIE выиграла соревнование, расходимся. Вам, чтобы вы не грустили - утешительный приз".
Это было очень неожиданно и очень обидно. Как они могли успеть все решить за два дня? Сколько у них в команде человек? Профиль команды неожиданно показал, что в ней всего один участник - "me", и у нее ноль решенных задач.
Сразу после того, как мы посмотрел их профиль, тебе приходит следующее письмо: "We were unable to contact team COOKIECOOKIECOOKIE to claim the one billion cookies that they baked. Moreover, we found that the team did not even solve a single puzzle, which is very much against the spirit of the hunt.
This is an unprecedented situation that we had not foreseen. While we are investigating this suspicious behavior, we would greatly appreciate if you can help us identify who this team is, perhaps by investigating the consolation prize in detail."
Фух. Это всего-навсего следующая загадка :)
При переходе по ссылке "утешительны приз" тебе показывалось окошко с надписью "мы, команда COOKIECOOKIECOOKIE, выиграли соревнование в этом году. Не грустите, вот вам немного нашего печенья". Ниже были фотографии нескольких разных по виду печений.
Мы смотрели на них и так и сяк, читали и перечитывали текст, несколько раз перечитали правила и FAQ, но мыслей не было вообще никаких. Пока внезапно не обнаружилось, что содержимое страницы "утешительный приз" изменилось. Теперь там было другое печенье. Мы стали перебирать в памяти, что мы делали и что могло к этому привести. Скорее всего, это процесс, привязанный ко времени, ведь мы не делали ничего такого особенного. И через минуту-другую страница опять изменилась. А потом 15 минут не было никаких изменений. Если вы смотрели "Пятый элемент", то помните
финальную сцену, в которой главгерои пытаются понять, как же использовать "супер оружие".
У нас была совершенно такая же тема: мы что-то сделали, страница изменилась, и никто не понимал, что именно. В конце-концов выяснилось, что один из членов нашей команды в процессе от нечего делать кликал по печенью над списком задач, чтобы набрать пару сотен очков и обогнать ближайшего соперника. Он обогнал их и перестал кликать :)
Содержимое страницы зависело от количества очков! Довольно быстро мы выяснили, что всего печенья - двенадцать видов, и каждое из них появляется на странице с определенным периодом (от 1 до 12). Дальше мы накликали количество очков до ближайшего числа, которое делится на 2...12 без остатка и увидели все виды печенья.
Fun fact: xdotool click --repeat 2051 --delay 140 1 кликнет за вас 2051 раз, а вам надо будет только сидеть и наблюдать :)
Это была так называемая meta puzzle, в которой надо было использовать решения предыдущих задач, чтобы собрать из них ответ для этого "этапа". Но вот беда - у нас не была решена одна из предыдущих 12 задач. Оказалось, что можно обойтись и без нее - если отсортировать печенье в порядке возрастания периода, поставить каждому из них в соответствие ответ на предыдущую задачу (там было тематическое совпадение), и для печенья с периодом N взять из ответа N-ую букву, то получалось "MEWANTC?OKIE". Оставшаяся буква легко угадывалась :)
Если кому интересно посмотреть - вот
ссылка на документ с решением Word SearchТы даешь отгадку, тебе говорял edit distance до правильного ответа. Чен сделал ее минут за 15, еще до того, как я добрался прочитать условие. Самая незаметная загадка мероприятия.
Layover Совершенно замечательная задача. По тексту описания надо было выйти на сайт со схемами самолетиков, распечатать картинки вроде вот этой, сложить из нее самолетик и прочитать на нем надпись:
Неожиданно самым большим препятствием для нас стало то, что схемы были рассчитаны на US Letter, а у нас была только A4, и поэтому самолетики приходилось "подгонять по месту".
Anagram Solver Моя жена взяла эту задачу фактически в одиночку, и хоть в процессе мы и запросили подсказку у организаторов (каждой команде раз в сутки давались два "билетика" для мелкой подсказки) это было очень круто.
Может авторы и видели себе ручное решение 120 анаграм, но мы еще для MIT Hunt наколхозили скрипт для поиска анаграмм в SOWPODS (это словарь для игроков в scabble), и малая механизация тут здорово помогла :)
Destructive InterferenceВычти шум из записи, чтобы услышать ответ. Я сдался, но Чен с помощью audacity и такой-то матери это сделал. Неожиданно сложная задача, как по мне, выбивающаяся из общего уровня.
Make Your Own Fillomino Задача, в которой код победил интеллект и написанный кем-то на коленке солвер решил все за минуту. Я открыл ее уже после того, как она была решена.
Special Snowflake
Third time is a charm :) Еще одна (третья!) задача решенная нами не то чтобы задом наперед, но тут мы тоже пропустили ряд зашитых в условие намеков и создали себе дополнительные проблемы на ровном месте.
Тут надо было отгадать 15 трехбуквенных слов, вписать их в треугольники так, чтобы в каждой вершине была букв, а затем сложить из треугольников снежинку Коха так, чтобы вокруг нее читались слова. Нам пришлось просить подсказку у организаторов, и только после того, как нам сказали, что все слова будут пятибуквенные, мы сдвинулись с места. Пришлось распечатать несколько снежинок и крутить их вручную. Хоть это и была одна из 12 "стартовых" задач, мы решили ее только ближе к финалу соревнования.
Split the Reference Приз зрительских симпатий :) Задача состоит из вопросов, ответами на которые могут быть одновременно как герои из вселенной Star Wards, так и персонажи из Harry Potter. Например, "фамилия дяди и тети, у которых главных герой живет в начале повествования". Дальше тебе надо взять определенные буквы из ответов и выбрать букву из алфавита, которая стоит ровно посередине между буквой из Star Wars и буквой из Harry Potter (split the reference -> split the difference).
Missing Pieces Задача, в которой мы обхитрили сами себя. Это такой гибрид полимино и судоку, который нужно сложить на доске 6х6. Изначально у нас была версия, что полимино можно класть только так, чтобы цифры были правильно ориентированы. Версия была правильной, но почему-то попытка быстро сложить первый набор вручную провалилась. Тут я подумал, что части можно вращать, а поскольку вручную их вращать и складывать было лень, я решил написать програмку. И я ее написал, но вот беда - она выдавала слишком много решений. И мы смотрели на эти решения и так и этак довольно долго времени, пока я не попробовать убрать вращения, и внезапно оказалось, что решений для каждого цвета всего по два, и отличаются они только расположением цифр для судоку.
Тут мы затупили второй раз. На каждой доске было 12 клеток пустого места, и мы решили, что missing pieces - это указание на то, что надо посчитать, как будут выглядеть полимино, закрывающие эти дырки, и из всех таких кусков что-то сложить. У нас же для этого и программа есть! Но вот беда - толком ничего не складывалось.
Потребовалась подсказка о том, что нам нужно искать different kind of missing pieces чтобы начать думать в правильном направлении :)
The Answer to This Puzzle Is... Тут мы прокололись (чуть-чуть) на нетщательном ведении записей. Ты как бы путешествовал по графу, в котором вершины - это вопросы, а ребра - это ответы, но тебе об этом не рассказывалось - у тебя было поле для ввода, ты вписывал туда ответ (или один из ответов) на текущий вопрос, а тебе говорили "нет, ответ неверный. На самом деле ответ на эту задачу - это (и тут какой-то новый вопрос)". В головоломке было 49 вопросов, и в какой-то момент мы увидели, что у большинства у них ответы только на буквы N/S/W/E. Я попробовал нарисовать карту, но Что-то Пошло не Так, и я убедил себя, что первые буквы ответов не означают north/south/west/east (хоть это было и не так). Мы вели список вопросов и отмечали в нем те, для которых мы уже перебрали все ответы, но умудрились один вопрос пропустить.
В конце-концов вопросы и ответы были засунуты в gtaphviz (точнее в neato) и по получившейся картинке мы нашли все свои пропуски:
Увы, до того, что надо навести все ребра, которые going back to the United Kingdom, мы додумались только после второй подсказки.
Не шмогли
Я брался решать
Adventure, но не увидел зашифрованного в игре основного условия задачи, и забил. Мы почти сделали
Overtime - коллекцию задач, похожих на Puzzle Hunt прошлого года, но "почти" оказалось недостаточно, и без недостающих кусков код не взялся. В
Unusual and strange puzzle collection мы застряли на извлечении текста из решений, и так ничего и не придумали.
Ближе к концу соревнования я затащил в команду коллегу - любителя cryptic crosswords, и он решил нам кроссворд из
Earth-shattering, и это было просто потрясающее зрелище. Я бы в жизни не додумался, что "Chunk of wood halted early came back" - это slab, потому что wood - это balsa, "balsa halted early" - это "bals", а "came back" - это наоборот, и соответственно из blas получается slab. А в этом кроссворде плюс ко всему в каждом вопросе одна буква была заменена на "o", и сначала надо было догадаться, какая именно (Big biro eaten by a lemur -> Big bird eaten by a lemur -> emu). Увы, мы застряли на получении ответа из решенного кроссворда и нарисованного поверх него сердца, и даже две подсказки нас не спасли.
У нас были все шансы сделать
o ea / Wrd Srch, но не хватило времени. Мое личное достижение - это реконструировать из "aae ae a oao o O, i e ia o O (7)" фразу "Character taken by a tornado to Oz, in the Wizard of Oz", а из "Iae o a Aeia Ee ei a (9)" - "Image on an American Express credit card". Дальше надо было комбинировать гласные и согласные из разных слов и вписывать их в решетку word search, но увы - состязание закончилось раньше.
Результат
Мы заняли 120 место из 450-500 команд, если считать за участников тех, кто хоть раз кликнул по печеньке. Мы были близки к решению еще двух задач, и как-то начали решать еще штуки 3-4, но было видно, что мы упираемся в предел своих возможностей.
Надо больше активных участников, коллективно такие задачи брать проще
Если такая штука будет в следующем году, обязательно участвуем :)
This entry was originally posted at
https://dastapov.dreamwidth.org/130008.html. Please comment there using
OpenID.