Image

Головоломка по информатике из университетского квеста

91f6ffa23552bace00487cbb2d313af1

Informatix – одна из интересных головоломок игры Puzzle Hunt Мельбурнского Университета 2013 года. Эта игра представляет собой ежегодный квест, цель которого — первыми обнаружить «сокровища», спрятанные где-то на территории кампуса. Задания игры не содержат инструкций. Вместо этого участникам дается сюжет, который постепенно развивается, и в который встраиваются головоломки. Ответом на задание является слово или словосочетание. Таким образом, если решением головоломки является нечто иное, то должен существовать какой-то способ, как получить из него слова.

Сюжет игры в том году был основан на персонажах комиксов про Астерикса и Обеликса, а каждая ее головоломка была связана с одним из жителей деревни галлов или одним из римлян. Informatix – один из жителей деревни. Его головоломка была частью второго акта игры. Ей предшествовало изображение этого персонажа, а также его краткое описание: «Эксперт в области обработки и извлечения данных, Informatix всегда склонен слишком усложнять проблему».

Сама же головоломка представляла собой сеть, составленную из терминалов и принтеров. Первая страница задания содержала графическое представление этой сети. Вторая страница задания содержала таблицу, описывающую переходы между элементами сети. Каждая строка этой таблицы описывала работу одного из 14 терминалов. В таблице было 4 столбца. Первый столбец содержал названия терминалов. Второй — условие, которое следовало проверить для номера задания печати, когда оно поступало на терминал. Третий — операции над номером задания, которые следовало выполнить после проверки условия. Четвертый — элементы сети, в которые направлялось задание после обработки в терминале.

Помимо этого, вторая страница содержала описание работы сети при выполнении конкретной задачи.

В изображенной компьютерной сети задания печати направляются между терминалами, вне всякого сомнения, запутанным образом, который описан в таблице спецификаций ниже. И все же, среди всей этой путаницы были удовлетворены следующие результаты:

  • из 14 уникальных заданий печати, инициированных через терминалы, 12 достигли принтера, и при этом их номер задания в итоге совпал с первоначальным;

  • оставшиеся 2 задания печати вернулись в свой исходный терминал, и снова номер задания в итоге совпал с первоначальным.

  • все (не возвращающие ошибку) операции маршрутизации были применены хотя бы один раз во время выполнения одного или нескольких заданий печати

  • номер задания печати всегда оставался целым числом от 1 до 99

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

Эту объемную задачу нетрудно разделить на небольшие подзадачи: они представляют собой подбор заданий печати для отдельных терминалов, который будет осуществляться в определенном порядке. Начнем с терминалов, которые возвращают ошибку в случае несоответствия номера условию, так как для них существует не так много возможных номеров.

Для терминала SQUARE мы можем использовать только числа ряда, которые являются квадратами: 1, 4 и 9. При этом мы получим следующие результаты работы сети.

  • SQUARE(1), TRIANGULAR(1), ELECTRON(9), PRINTER(7), FAIL.

  • SQUARE(4), TRIANGULAR(2), PRINTER(11), FAIL.

  • SQUARE(9), TRIANGULAR(3), ELECTRON(11), PRINTER(9).

Мы нашли единственный возможный номер задания печати для терминала SQUARE, это 9.

Для терминала PRONIC мы можем использовать только прямоугольные числа. В нашем ряду таковыми являются 2, 6 и 12.

  • PRONIC(2), 3MULTIPLE(20), #ERROR.

  • PRONIC(6), 3MULTIPLE(24), RESIDUE(8), 3MULTIPLE(18), RESIDUE(6), PRINTER(6).

  • PRONIC(12), 3MULTIPLE(30), RESIDUE(10), HAPPY(3628800), FAIL.

Мы нашли единственный возможный номер задания печати для терминала PRONIC, это 6.

Для терминала 3MULTIPLE мы можем использовать только числа, кратные трем. Среди чисел ряда, которые мы еще не задействовали, таковыми являются 3 и 12.

  • 3MULTIPLE(3), RESIDUE(1), HAPPY(1), SQUARE(4), TRIANGULAR(2), PRINTER(11), FAIL.

  • 3MULTIPLE(12), RESIDUE(4), HAPPY(24), PRINTER(12).

Мы нашли единственный возможный номер задания печати для терминала 3MULTIPLE, это 12.

Для терминала CATALAN мы можем использовать только числа Каталана. Таковыми в нашем ряду являются 1, 2, 5 и 14.

  • CATALAN(1), ABUNDANT(5), EVEN(35), PRINTER(10), FAIL.

  • CATALAN(2), ABUNDANT(6), EVEN(42), FACTORS(39), PRINTER(0), FAIL.

  • CATALAN(5), ABUNDANT(9), EVEN(63), PRINTER(2), FAIL.

  • CATALAN(14), ABUNDANT(18), PRONIC(72), 3MULTIPLE(90), RESIDUE(30), PRINTER(14).

Мы нашли единственный возможный номер задания печати для терминала CATALAN, это 14.

Рассмотрим далее терминал TRIANGULAR, который проверяет, является ли число n треугольным. В случае невыполнения данного условия терминал прибавит к n 9 и передаст результат на PRINTER. Очевидно, в таком случае мы не получим первоначальное число, а это противоречит условиям задания. Значит, для этого терминала достаточно рассмотреть только треугольные числа ряда. Из оставшихся у нас чисел таковыми являются 1, 3 и 10.

  • TRIANGULAR(1), ELECTRON(9), PRINTER(7), FAIL.

  • TRIANGULAR(3), ELECTRON(11), PRINTER(9), FAIL.

  • TRIANGULAR(10), ELECTRON(18), DOUBLE(7), FACTORS(6), PRINTER(10).

Мы нашли единственный возможный номер задания печати для терминала TRIANGULAR, это 10.

Рассмотрим теперь терминал HAPPY, который проверяет, подпадает ли число n под определение счастливого числа. При невыполнении условия терминал разделит n на 2 и передаст результат на PRINTER. Очевидно, при этом мы не получим первоначальное число. Значит, для этого терминала достаточно рассмотреть только имеющиеся у нас на данный момент счастливые числа: 1, 7 и 13.

  • HAPPY(1), SQUARE(4), TRIANGULAR(2), PRINTER(11), FAIL.

  • HAPPY(7), SQUARE(10), #ERROR.

  • HAPPY(13), SQUARE(16), TRIANGULAR(4), PRINTER(13).

Мы нашли единственный возможный номер задания печати для терминала HAPPY, это 13.

Перейдем далее к терминалу EVEN, который проверяет, является ли число n четным. При невыполнении данного условия терминал найдет остаток от деления n на 9, прибавит к нему 2 и передаст результат на PRINTER. Очевидно, при этом мы не получим первоначальное число. Значит, для этого терминала достаточно рассмотреть только оставшиеся у нас четные числа: 2, 4 и 8. Легко установить, что число 2 не подходит для данного терминала.

  • EVEN(2), FACTORS(-1), FAIL.

Далее, оказывается, что последовательности для чисел 4 и 8 будут в определенный момент проходить через терминал REPDIGIT, и при этом n будет равно одному: REPDIGIT(1). Если предположить, что условие REPDIGIT при n = 1 не выполняется, то следующим этапом обеих последовательностей станет PRINTER(1), а значит для терминала EVEN не подходит ни одно из оставшихся чисел ряда, что противоречит условиям задания. Следовательно, условие термина REPDIGIT при n = 1 выполняется. А это возможно только в том случае, если номером задания печати для терминала REPDIGIT является 11.

  • REPDIGIT(11), PRINTER(11).

Таким образом, мы нашли номер задания печати для терминала REPDIGIT, это 11. Теперь можно вернуться к терминалу EVEN.

  • EVEN(4), FACTORS(1), REPDIGIT(1), DOUBLE(4), FACTORS(3), CUBIC(4), EVEN(4).

  • EVEN(8), FACTORS(5), CUBIC(6), EVEN(4), …, FAIL.

Мы нашли единственный возможный номер задания печати для терминала EVEN, это 4.

Рассмотрим далее терминал ELECTRON, который проверяет, соответствует ли число n количеству электронов в одной из оболочек атома. Если это условие не выполняется, то терминал отнимет от n 2 и передаст результат на PRINTER. Очевидно, в этом случае мы не получим первоначальное число. А значит, достаточно рассмотреть только те числа ряда, которые удовлетворяют условию терминала: 2 и 8.

  • ELECTRON(2), DOUBLE(2), FACTORS(1), REPDIGIT(1), DOUBLE(4), FACTORS(3), CUBIC(4), EVEN(4), …, FAIL.

  • ELECTRON(8), DOUBLE(8), FACTORS(7), CUBIC(8), DOUBLE(16), FACTORS(15), PRINTER(8).

Мы нашли единственный возможный номер задания печати для терминала ELECTRON, это 8.

На данный момент у нас осталось 5 чисел ряда, которые мы еще не использовали: 1,2,3,5 и 7. Попробуем каждое из них для терминала ABUNDANT.

  • ABUNDANT(1), EVEN(7), PRINTER(9), FAIL.

  • ABUNDANT(2), EVEN(14), FACTORS(11), CUBIC(12), EVEN(12), FACTORS(9), PRINTER(2).

  • ABUNDANT(3), EVEN(21), PRINTER(5), FAIL.

  • ABUNDANT(5), EVEN(35), PRINTER(10), FAIL.

  • ABUNDANT(7), EVEN(49), PRINTER(6), FAIL.

Мы нашли единственный возможный номер задания печати для терминала ABUNDANT, это 2.

У нас остались числа 1,3,5 и 7. Попробуем каждое из них для терминала FACTORS.

  • FACTORS(1), REPDIGIT(1), DOUBLE(4), PRINTER(1).

  • FACTORS(3), CUBIC(4), EVEN(4), …, FAIL.

  • FACTORS(5), CUBIC(6), EVEN(4), …, FAIL.

  • FACTORS(7), CUBIC(8), DOUBLE(16), PRINTER(13), FAIL.

Мы нашли единственный возможный номер задания печати для терминала FACTORS, это 1.

У нас остались числа 3,5 и 7. Попробуем каждое из них для терминала RESIDUE. 

  • RESIDUE(3), PRINTER(5), FAIL.

  • RESIDUE(5), 3MULTIPLE(15), RESIDUE(5).

  • RESIDUE(7), HAPPY(5040), FAIL.

Мы нашли единственный возможный номер задания печати для терминала RESIDUE, это 5.

У нас остались числа 3 и 7. Попробуем каждое из них для терминала DOUBLE.

  • DOUBLE(3), FACTORS(2), CUBIC(3), EVEN(1), PRINTER(3).

  • DOUBLE(7), FACTORS(6), PRINTER(10), FAIL.

Мы нашли единственный возможный номер задания печати для терминала DOUBLE, это 3.

Теперь осталось только использовать число 7 для оставшегося терминала CUBIC. 

  • CUBIC(7), EVEN(5), RPINTER(7).

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

  • FACTORS(1), REPDIGIT(1), DOUBLE(4), PRINTER(1).

  • ABUNDANT(2), EVEN(14), FACTORS(11), CUBIC(12), EVEN(12), FACTORS(9), PRINTER(2).

  • DOUBLE(3), FACTORS(2), CUBIC(3), EVEN(1), PRINTER(3).

  • EVEN(4), FACTORS(1), REPDIGIT(1), DOUBLE(4), FACTORS(3), CUBIC(4), EVEN(4).

  • RESIDUE(5), 3MULTIPLE(15), RESIDUE(5).

  • PRONIC(6), 3MULTIPLE(24), RESIDUE(8), 3MULTIPLE(18), RESIDUE(6), PRINTER(6).

  • CUBIC(7), EVEN(5), RPINTER(7).

  • ELECTRON(8), DOUBLE(8), FACTORS(7), CUBIC(8), DOUBLE(16), FACTORS(15), PRINTER(8).

  • SQUARE(9), TRIANGULAR(3), ELECTRON(11), PRINTER(9).

  • TRIANGULAR(10), ELECTRON(18), DOUBLE(7), FACTORS(6), PRINTER(10).

  • REPDIGIT(11), PRINTER(11).

  • 3MULTIPLE(12), RESIDUE(4), HAPPY(24), PRINTER(12).

  • HAPPY(13), SQUARE(16), TRIANGULAR(4), PRINTER(13).

  • CATALAN(14), ABUNDANT(18), PRONIC(72), 3MULTIPLE(90), RESIDUE(30), PRINTER(14).

На данный момент мы еще не использовали графическое представление сети с первой страницы задания. Примечательно, что оно позволяет визуально отследить ход выполнения каждого задания печати. Интересно также, что названия терминалов написаны причудливым образом, с использованием поворотов и отражений. 

Если графически изобразить ход выполнения каждого задания печати, а затем повернуть и/или отразить диаграмму так, чтобы название его стартового терминала приобрело привычный для чтения вид, то можно разглядеть одну из букв английского алфавита. Вместе эти буквы, расположенные в соответствии с номерами их заданий печати, образуют понятие из области математики — LAMBDA CALCULUS (лямбда-исчисление). Оно и является ответом на задание.

1e672cffe2c0491d598cf581c1bb5d7e

https://wondrousnet.blogspot.com

Источник: habr.com

✅ Найденные теги: Головоломка, новости

ОСТАВЬТЕ СВОЙ КОММЕНТАРИЙ

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

галерея

dummy-img
Силуэт лица с диаграммой связи на голове, символизирующий думы и идеи.
ideipro logotyp
Руки режут свежий хлеб на деревянной доске.
Женщина с красными волосами смотрит через металлическую сферу на фоне кирпичной стены.
Мужчина заряжает электромобиль на зимней стоянке, снег, дальний план - деревья и горы.
Человек спит в кровати под красным пледом, солнечный свет падает на подушку.
Человек в смокинге держит планеты Земля и Марс, символизируя космические достижения.
Твердотельный аккумулятор Donut на выставке, показывает замещающий литий-ион стоимость.
Image Not Found
dummy-img

Спрос на хранилища для ИИ привёл к 24% росту прибыли производителей памяти NAND

Умные люди из аналитического агентства TrendForce провели анализ текущей ситуации производителей микросхем памяти NAND и пришли к выводу, что за последний квартал 2025 года их выручка прилично увеличилась, а показатели некоторых компаний прилично выделяются на фоне остальных.…

Мар 5, 2026
ideipro logotyp

Bitget Wallet интегрирует DT One для пополнения мобильной связи в более чем 170 странах

Bitget Wallet, приложение для повседневных финансов, объявил о партнерстве с DT One, которое позволит осуществлять пополнение мобильной связи напрямую внутри кошелька с использованием стейблкоинов, связывая ончейн-балансы с повседневными телеком-сервисами. Благодаря инфраструктуре DT One пользователи Bitget Wallet получают…

Мар 5, 2026
Человек в смокинге держит планеты Земля и Марс, символизируя космические достижения.

Почему SpaceX может выйти на биржу и с чем это может быть связано

Мы ведь явно не воспринимаем всерьез центры обработки данных в космосе? Элизабет Лопатто, старший репортер. Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной странице вашего сайта. Все…

Мар 5, 2026
Твердотельный аккумулятор Donut на выставке, показывает замещающий литий-ион стоимость.

Согласно результатам испытаний, твердотельная батарея Donut Lab способна выдерживать (экстремальные) температуры.

Разработанная финским стартапом батарея не только выдержала экстремальные условия высокой температуры, но и фактически увеличила свою емкость. Эндрю Дж. Хокинс, редактор раздела «Транспорт». Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в…

Мар 5, 2026

Впишите свой почтовый адрес и мы будем присылать вам на почту самые свежие новости в числе самых первых