
В преддверии анонса Google I/O 2022 компания запустила специальную (и довольно сложную!) головоломку в качестве тизера конференции. Приготовьте свои умы, потому что мы погрузимся в эту головоломку и ее решения.
Каждый год тизер-головоломка Google I/O была полна интриги. Чаще всего кому-то нужно было разгадать головоломку, прежде чем Google объявлял точные даты своей ежегодной конференции для разработчиков Google I/O. Помимо простой престижности возможности сказать, что вы были первым, кто решил головоломку, Google часто вознаграждал первого успешного участника бесплатным билетом на конференцию (стоимостью более 1000 долларов).
Содержание
О головоломке I/O 2022
Прежде всего, называть тизер Google I/O этого года просто «головоломкой» — значит преуменьшить то, что создала Google. Вместо этого это стоит рассматривать как онлайн-музыкальную игрушку с необязательной встроенной головоломкой. Поэтому первое, что вам следует сделать на странице тизера I/O 2022, — это включить звук — по крайней мере, на несколько минут.
Тизер состоит из четырех последовательностей (A, B, C и D), каждая из которых отвечает за разный «инструмент» восхитительно спокойной музыки. На прилагаемой панели управления вы можете отключить (M) каждый из этих инструментов или выбрать один для сольного исполнения (S) на некоторое время. Хотя эти инструменты не являются частью головоломки, они демонстрируют уровень детализации, проявленный разработчиками Google при создании этого тизера.
Нажав/коснувшись последовательности, вы получите больше элементов управления для настройки этого инструмента песни. В верхнем левом углу есть кнопки плюс и минус, которые позволяют настроить количество долей в каждом такте песни. Рядом находится полоса, отображающая доли. Нажав на любую долю, вы можете добавить к ней ноту. Эти два элемента управления, помимо их роли в настройке звука песни, являются основными элементами решения головоломки, которые мы будем использовать сегодня.
Каждая последовательность начинается с дикой и запутанной формы с набором точек, представляющих каждую долю/ноту. Как Google отметил в своих первоначальных твитах-тизерах к головоломке, наша цель — «распутать» струны. Для этого все, что нам нужно сделать, — это найти правильное количество долей и размещение нот для каждой последовательности песни. Звучит достаточно просто, но подсказки, используемые для определения этих размещений, — вот где все становится непросто.
На самом деле, эта головоломка настолько сложна, что никто не решил ее полностью до того, как были официально объявлены даты проведения мероприятия генеральным директором Сундаром Пичаи в прошлом месяце. Нам удалось пройти половину решения в прошлом месяце, но для остальной части потребовалось консультация с веселой командой создателей головоломок из команды Google I/O.
Советы и хитрости
Поскольку Google I/O — это конференция, ориентированная на разработчиков, тизер-головоломка ориентирована на разработчиков. Хотя части головоломки могут быть решаемыми на мобильном устройстве, иногда вам потребуется использовать настольный компьютер или ноутбук с доступом к Chrome DevTools.
В частности, вы найдете много помощи на вкладке «Консоль» DevTools, как в основной вкладке головоломки, так и в окне каждой отдельной подсказки. Если вы хотите попробовать решить головоломки самостоятельно, не глядя на решения ниже, но вам нужна небольшая дополнительная помощь, вы можете ввести hint() в консоль, находясь на одной из страниц подсказок. Большинство подсказок имеют несколько подсказок, которые должны помочь вам найти решение.
Кроме того, как только у вас будут ответы на все подсказки для конкретной последовательности, Google упростил использование консоли для ввода окончательного решения для последовательности. Вам нужно будет использовать команду updateSequence, которая требует букву (A, B, C или D) и числа вашего окончательного ответа. Вот пример:
updateSequence('A', '0000111100001111')
Эта возможность вводить последовательности с помощью консоли полезна, так как каждая отдельная подсказка дает ответ в двоичном коде, а окончательный ответ каждой последовательности находится путем «сложения» этих чисел, как если бы они не были двоичными (например, 0101 + 0001 = 0102). Внутриигровые элементы управления для добавления долей или изменения нот интересны для рассмотрения этого как музыкальной игрушки, но ввод окончательного ответа по одной ноте становится утомительным.
Стоит отметить, что Google также тщательно использовал альтернативный текст (текст доступности, который появляется при наведении курсора на изображение) в каждой подсказке. Помимо того, что головоломка I/O 2022 доступна для слабовидящих, эти фрагменты альтернативного текста также могут предоставлять ярлыки для поиска наиболее важных деталей дизайна каждой подсказки. Следите за ними!
Наконец, хотя некоторые предварительные знания могут быть полезны для решения подсказок этой головоломки, большая часть необходимой информации может быть относительно легко найдена с помощью поиска в Google.
Решение последовательности A
Google делает все довольно просто с последовательностью A головоломки I/O 2022. Когда вы нажимаете знак равенства в углу, появляется значок числа 31. Этот значок открывает всплывающее окно с нашей первой подсказкой.
Подсказка 1
В подсказке 1 нам дана сетка 4×4 из кажущихся случайными чисел, а в углу есть кнопка со знаком вопроса. Нажатие на нее предлагает немного загадочный контекст для текущей подсказки: «Правда прежде всего нечетная».

Эта подсказка дает нам два критерия для поиска «правды». Слово «прежде всего» — это игра слов с «prime» (простое число), а «нечетная» означает, что нам нужны только нечетные числа. Соединяя это, мы хотим отметить из этой сетки простые числа, которые также являются нечетными, то есть 19 и 73. Число 2 также является простым, но это единственное простое число, которое также является четным.
Теперь, как применить это обратно к музыкальной головоломке? Во-первых, мы рассматриваем сетку как простой список чисел. Поскольку здесь 16 чисел, нам нужно будет добавлять доли, пока у нас не будет 16. Затем нам нужно добавить ноту в места, где должны быть 19 и 73 — второе и десятое положения. Вот как будет выглядеть ввод окончательного решения для последовательности A:
Или, как упоминалось выше, вы также можете просто использовать команду updateSequence в консоли DevTools, вот так:
updateSequence('A', '0100000001000000')
Решение последовательности B
С последовательностью B головоломки I/O 2022 дела обстоят немного сложнее. Для начала, на каждой доле теперь есть два разных варианта нот. В то же время есть две отдельные подсказки, которые нужно разгадать, чтобы найти окончательный ответ.
Подсказка 2
Подсказка 2 показывает классического маскота T-Rex из игры Chrome Dino Run, стоящего на зеленой траве под голубым небом, и предлагает подсказку «Начни видеть в двоичном коде». Здесь слово «видеть» имеет двойное значение, в первую очередь относясь к глазу динозавра.

При наведении курсора на каждый элемент подсказки в альтернативном тексте упоминается CSS/шестнадцатеричный цвет. Вместо настоящего черного, глаз — это CSS/шестнадцатеричный цвет #202821. Затем нам нужно «видеть» это число в двоичном коде. Преобразуя шестнадцатеричное в двоичное, мы получаем 24-значное число: 001000000010100000100001.
Подсказка 3
Далее, в подсказке 3, у нас есть сетка 6×4 с буквами I и O (для Google I/O, конечно), заменяющими обычные 1 и 0 в двоичном коде. Подсказка к подсказке: «Что бы сделал Мортон?»
Ответ здесь кроется в термине информатики, называемом «Z-порядок» или «порядок Мортона». Его использование в компьютерах связано с организацией сложных, многомерных точек данных в одномерную линию. Мы будем следовать Z-образной схеме порядка Мортона через сетку, как показано ниже. Это дает нам второе двоичное число: 000010010010000100001001.


Последний шаг в решении последовательности B заключается в способе представления подсказок в основном окне головоломки. Они перечислены вертикально, разделены знаком плюс и имеют знак равенства под ними. Поскольку есть два разных варианта нот, мы знаем, что ищем не истинное двоичное число. Вместо этого давайте просто «сложим» два числа вот так:
001000000010100000100001
+ 000010010010000100001001
= 001010010020100100101002
Зная это окончательное число, добавьте доли к последовательности, пока их не станет 24, а затем заполните ноты соответствующим образом. Число 1 относится к белым нотам, а 2 — к синим. Решение для последовательности B будет выглядеть так:
updateSequence('B', '001010010020100100101002')

Решение последовательности C
Продолжая неуклонное нарастание, последовательность C имеет три подсказки, решения которых необходимо сложить.
Подсказка 4
Начиная с подсказки 4, мы находим фрагмент нотной записи с 12 похожими фразами. Основная подсказка: «Не все мотивы идеальны».
К счастью (поскольку я не умею читать нотную запись), Google предоставляет все, что нам нужно знать об этой подсказке, в альтернативном тексте. Каждый фрагмент песни полностью описан:
Фрагмент 1: начинается с восьмой ноты, идущей вниз к четвертной, заканчивается половинной нотой
Фрагмент 4: начинается с восьмой ноты, идущей вверх к четвертной, заканчивается четвертной нотой, слитной с четвертной нотой
Взглянув на дополнительные подсказки, предлагаемые в консоли, мы находим: «Важно не только то, где вы начинаете, но и то, где вы заканчиваете» и «То, что спускается, должно подняться. Или наоборот?» Из этого мы можем сделать вывод, что нам нужно отделить фрагменты, которые «восходят», от тех, которые «нисходят», что даст нам ответ 000100100100.
Подсказка 5
Далее, в подсказке 5, у нас есть сетка карточек с музыкальными нотами. Эти карточки можно описать на основе четырех различных атрибутов: цвет фона (красный, синий и желтый), количество нот (два, три и четыре), длина нот (половинная, восьмая и четвертная) и направление (восходящее, нисходящее и прямое).
Из прилагаемой подсказки — «У вас есть перспектива?» — мы можем найти, что это версия классической карточной игры SET. Что нам нужно сделать, так это выяснить, какие карточки могут быть включены в действительный набор на основе правил игры. Вкратце, для каждого атрибута все три карты должны иметь одинаковый атрибут или все иметь разные.
Например, три красные карты можно объединить, потому что:
- У них одинаковый цвет фона.
- У них одинаковое направление.
- У них одинаковая длина нот.
- Количество нот разное (2, 3, 4).
Вот наборы, которые можно составить из этих 12 карт:


Решением подсказки 5 является пометка четырех крайних карт (не включенных в набор) как 1, а остальных как 0, вот так: 100100100100.
Подсказка 6
Для подсказки 6 мы находим еще один фрагмент нотной записи, но вместо отображения самих нот у нас просто «интервалы» 12 нот. Это наша первая подсказка о том, что нам нужно знать немного музыкальной теории, поскольку «интервал» — это разница в высоте звука между двумя разными звуками или нотами. Опять же, вместо того, чтобы знать, как читать нотную запись, Google описывает каждую ноту в альтернативном тексте.

Основная подсказка заключается в том, что «Без напряжения нет гармонии», в то время как одна из дополнительных подсказок, предлагаемых в консоли, — «консонанс против диссонанса». С небольшой помощью из онлайн-книги по теории музыки EarMaster мы можем найти список нотных интервалов, которые считаются «диссонирующими» или создающими напряжение, а не приятными на слух.
Поскольку только седьмой и десятый интервалы в нотной записи считаются диссонирующими, мы получаем ответ 000000100100.
Сложив все три этих решения, мы получим окончательный ответ для последовательности C: 100200300300. Здесь 1 — желтая нота, 2 — красная нота, а 3 — синяя нота, или, как всегда, вы можете ввести решение через консоль вот так:
updateSequence('C', '100200300300')
Последовательность D
В последней партии подсказок мы отказываемся от музыкальной темы и идем на уровень глубже, нам нужно сложить четыре разных ответа.
Подсказка 7
В подсказке 7 нам показан авиабилет, украшенный коллекцией флагов. Это флаги, используемые в Международном своде сигналов для представления (среди прочего) различных букв алфавита.
Исходя из этого, мы можем прочитать авиабилет как «HEL → ??? → SFO», что означает путешествие из аэропорта Хельсинки в международный аэропорт Сан-Франциско с промежуточной остановкой. Ниже билета есть пять вариантов потенциальных аэропортов пересадки: Копенгаген (CPH), Сидней (SYD), Токио (HND), Ханой (BAI) и Кейптаун (CPT).

Далее мы смотрим на прилагаемую подсказку «не напрямую, а кратко». Из предложенных вариантов наиболее краткий маршрут из Хельсинки в Сан-Франциско проходит через Копенгаген, будучи на тысячи миль короче других маршрутов. Это легко измерить с помощью инструмента определения расстояния Google Maps.
Последний шаг — преобразовать код аэропорта, CPH, в двоичный ответ. Для этого мы преобразуем буквы из простого ASCII-текста в двоичный код, предлагая 24-значное решение: 01000011 01010000 01001000.
Подсказка 8
Подсказка номер 8 — это та, которая доставила нам и другим решателям больше всего хлопот. Фактически, в ответ на отзывы дизайнеры головоломки Google пересмотрели дизайн, чтобы оставить меньше места для альтернативных интерпретаций.
Эта подсказка представляет собой теннисный корт, в середине которого находится серия из 54 «очков», обозначенных черными и белыми формами в виде таблеток. В углу также есть индикатор того, кто подает, а именно «игрок 1» согласно альтернативному тексту.
Основная подсказка: «К настоящему времени вы узнали все нюансы», а единственная дополнительная подсказка в консоли: «Дуэль во время ровно».

Чтобы разгадать эту конкретную подсказку, нам нужно ознакомиться с тем, как начисляются очки в теннисе и как объявляется счет. Для начала, счет идет 15, 30, 45 за первые три очка. Если один игрок набирает 45 раньше своего соперника и выигрывает еще одно очко, этот игрок побеждает.
В противном случае, если оба игрока набирают 45, игра входит в состояние «ровно». С «ровно», когда один из игроков выигрывает очко, этот игрок получает «преимущество». Если игрок с преимуществом — это подающий игрок, счет объявляется как «преимущество-в», иначе — «преимущество-вне». Когда у одного игрока есть преимущество, если соперник выигрывает очко, игра возвращается к «ровно». Наконец, если игрок с преимуществом выигрывает еще одно очко, он выигрывает игру.
Возвращаясь к данной подсказке «К настоящему времени вы узнали все нюансы», кажется, нам нужно использовать маркеры очков для отслеживания счета игры и обращать внимание на объявления преимущества-в и преимущества-вне.
Поскольку индикатор подачи находится на верхней стороне доски, мы предполагаем, что когда черный маркер находится на верхней стороне индикатора очков, подающий игрок набрал очки, и наоборот. Если предположить, что все начинается с новой игры, игра входит в «ровно» (45/45) после шестого очка. С этого момента мы находим 24 случая «преимущество-в» или «преимущество-вне», что дает нам решение 00001001 01000011 00010010.
Подсказка 9
По сравнению с предыдущей подсказкой, подсказка 9 — это пустяк. Нам показана сетка из 24 наборов координат, наряду с подсказкой «O — это офис». Все, что нам нужно сделать, — это ввести их в Google Maps и найти ближайшее местоположение, принадлежащее Google.

Хотя большинство местоположений — это офисные здания, в списке также есть несколько центров обработки данных Google. И если «O» (или 0) — это офис, то остальные местоположения должны быть 1.
Еще один важный фактор этой головоломки — порядок, в котором нам нужно читать ответы. Многократно нажимая клавишу Tab, мы обнаруживаем, что нам нужно следовать списку сверху вниз, а затем слева направо. Это дает нам три столбца по восемь для окончательного ответа: 00000010 01011010 00001011.
Подсказка 10
Для последней подсказки последовательности D нам представлена сетка часов, наряду с подсказкой «В Лондоне 12:30». Неинформативно, ни одни из часов не показывают AM или PM. Больше, чем в предыдущих подсказках, нам нужно полагаться на альтернативный текст в этой головоломке, поскольку каждые часы также связаны с местоположением/часовым поясом, например:
Буэнос-Айрес, 9:30
Венесуэла, 8:30

Из подсказки, предложенной в консоли, «До и после UTC», мы можем предположить, что нам нужно разобраться, какие часовые пояса расположены до GMT/UTC, а какие после. Например, часовой пояс Буэнос-Айреса — UTC-3, а Гонконга — UTC+8.
При допущении, что часовые пояса до UTC — это 0, а после — 1, мы получаем возможный ответ: 00010001 01010011 00001011.
Теперь, когда ответы на все четыре подсказки получены, мы можем сложить их все и вернуться в консоль DevTools в основном окне головоломки.
updateSequence('D', '010110230403103201013032')
Смещения / Золотая пластинка
Последний шаг к завершению симфонии головоломки Google I/O — это корректировка смещений. По сути, нам нужно настроить точки запуска четырех мелодий, чтобы они лучше синхронизировались друг с другом. Для этого нажмите на значок в форме пластинки в левом нижнем углу приложения.
Это отодвинет предыдущую головоломку в сторону, открывая четыре «распутанные струны», обвивающие друг друга. В правом нижнем углу вы снова увидите знак равенства, открывающий 11-ю и последнюю подсказку.
Подсказка 11
Чтобы мы все были в напряжении, подсказка 11 на самом деле состоит из четырех индивидуальных мини-головоломок, которые нужно решить. В каждой головоломке нам показано (тем или иным образом), как выглядит последовательность при правильном смещении. Вместо отображения чисел, каждая под-подсказка показывает букву проигрываемой ноты, что означает, что нам также придется решить, как преобразовать буквы обратно в числа.

Так же, как и при вводе ответов для последовательностей, смещения можно корректировать с помощью консоли DevTools, используя команду «updateOffset», как вы увидите в приведенных ниже руководствах по ответам.
Смещение A
Для начала мы находим строку нулей и букву C, что создает впечатление слегка измененного двоичного кода.
0000C0000000C000
Мы можем предположить, что буква C заменяет число 1 в ответе для последовательности A. Поэтому давайте посмотрим на исходный ответ (обозначенный O) и на то, как должен выглядеть правильно смещенный вариант (обозначенный C).
O: 0100000001000000
C: 0000100000001000
Перемещая начальный разряд в конец, смещая стартовую точку по одному, мы обнаруживаем, что нам нужно сдвинуться на пять позиций, чтобы получить новый ответ. Это означает, что наше смещение равно 5.
updateOffset('A', 5)
Смещение B
Во второй мини-головоломке мы видим сетку 5×5 квадратов, за исключением нижнего правого угла, которые либо пусты, либо содержат буквы C или E. Читая слева направо, мы получаем довольно простую для понимания последовательность.
0C00C00C 0C00E00C 0C00C00E
Так же, как в ответе на последовательность B есть только два использования числа 2, в этой подсказке смещения есть только два использования буквы E. Поэтому мы можем снова посмотреть на это так:
O: 001010010020100100101002
C: 010010010100200101001002
Снова, регулируя начальный разряд, мы обнаруживаем, что правильное смещение равно 11. На этом этапе вы, возможно, заметили закономерность в ответах, но давайте продолжим к следующему смещению!
updateOffset('B', 11)
Смещение C
Продолжая по часовой стрелке, наша следующая головоломка показывает несколько кругов в форме виниловой пластинки, вокруг которых находится другой круг, образованный прерывистыми линиями и четырьмя буквами (читаются по часовой стрелке): C, F, G, G. Так же, как решение последовательности C имеет ноту, за которой следуют две пустые области, эта головоломка со смещением имеет букву, за которой следуют два сегмента линии.
Далее нам нужно выяснить, каким числам соответствуют какие ноты. Это легко сделать благодаря повторяющейся букве G, которая соответствует повторяющемуся числу 3 в ответе на последовательность C. Это означает, что предшествующая F должна быть числом 2, а C — 1. Сравнивая показанное смещение с исходным ответом, мы находим следующее:
O: 100200300300
C: 100200300300
Верно, они абсолютно одинаковы. Первым нашим инстинктом для этой части головоломки было оставить смещение на 0, поскольку изменений не требовалось. Но на самом деле есть более одного способа взглянуть на это. По причинам, которые скоро станут ясными, нам нужно пройти полный круг до начала, что даст нам ответ 12.
updateOffset('C', 12)
Смещение D
Последний этап этого путешествия по решению головоломки выглядит немного похоже на звезду, с двадцатью четырьмя точками, исходящими из центральной точки, с линиями разной длины. Длина каждой линии соответствует определенной букве, увеличиваясь в порядке E, F, G и C.
Решая эту головоломку сложным путем, мы могли бы измерить длину каждой линии и таким образом определить соответствующую букву. Делая это легко, мы можем использовать альтернативный текст для каждой точки, чтобы раскрыть комбинацию букв:
GF0E0EE0FG0C0GE0GF0E0EG0
Хитрость в том, чтобы выяснить, какая буква соответствует чему, заключается в «EE», единственных повторяющихся буквах в подсказке. Возвращаясь к нашему ответу на последовательность D, мы находим единственную пару — «11». Оттуда все встает на свои места, давая нам исходные и исправленные ответы:
O: 010110230403103201013032
C: 320101102304031032010130
Чтобы правильно настроить это смещение, нам приходится пройти почти полный круг, с окончательным ответом 22.
updateOffset('D', 22)
Головоломка решена
После того как последнее смещение решено и введено, вы попадаете в грандиозное завершение головоломки Google I/O 2022. Если бы головоломка была решена до полного объявления мероприятия, числовые смещения (5, 11, 12, 22) сыграли бы свою роль в раскрытии того, что Google I/O пройдет 11-12 мая 2022 года — иначе говоря, «5/11 – 12/22».
Особая благодарность команде дизайнеров головоломки Google I/O!