Криптографические приключения: таинственные шифры - Страница 20


К оглавлению

20

Он протянул коробку отцу, тот повертел в руках, положил на стол и сфотографировал на смартфон. Затем он показал ее и нам с Катей. Это оказался деревянный футляр замысловатой формы, и у меня сразу появились некоторые идеи относительно его предназначения.

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

Дома папа первым делом зашёл в свой почтовый ящик и к общему восторгу обнаружил письмо из Моршанского краеведческого музея. В письме были иллюстрации. Мы вновь в самом хорошем качестве увидели найденные в музее кусочки головоломки:



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

* * *

На следующий день прямо с самого утра я набросился на задачу. Мне было интересно узнать, почему элементы шифровального письма хранились в коробочке такой замысловатой формы. Я решил сделать для экспериментов модель этой головоломки. Я взял у отца бумагу, расчертил ее в соответствии со схемой и тщательно перерисовал элементы шифровки. Затем я нарисовал и план коробочки в том же масштабе, а после этого вырезал все полученные изображения из бумаги.

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

— Знаешь, а это интересная идея. Я сам до неё не додумался. А подсчитай-ка площадь коробочки и общую площадь всех элементов?

Действительно! Перед тем, как пробовать уложить элементы в коробочку, надо было бы сделать эту простую проверку. Я подсчитал обе площади, и они совпали. Это еще больше убедило меня, что я нахожусь на правильном пути. Но у меня все равно не получалось сложить головоломку. Минут через пятнадцать я хотел уже бросить это дело и уехать к Кате, но тут отец сказал:

— Давай-ка всё это сюда. Пошли к компьютеру, я как раз написал программу, которая ищет варианты плотной упаковки элементов в коробку.

Я удивился: неужели за эти пятнадцать минут папа успел осмыслить задачу и написать программу? Но спорить я не стал, собрал вырезанные элементы и вошёл внутрь штаба.

Папа сидел за компьютером и что-то усердно печатал. Когда я подошёл, он забрал у меня мою модель и сказал, что надо доработать программу, чтобы она смогла работать именно с нашей задачей. Он стал быстро вводить последовательности нулей и единиц, и я увидел, что ряды единиц повторяют форму элементов, а нули заполняют пространство, чтобы на экране элементы выглядели прямоугольными. Через несколько минут папа завершил ввод и нажал какую-то комбинацию клавиш. На экране появилось окошко командной строки, а в самом низу мигал курсор. Папа ввёл какое-то слово и нажал Enter.

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

— Есть! Давай сюда свою модель.

Я протянул ему вырезанные детали, и он начал заполнять элементами изображение коробочки. Он брал элемент, смотрел на числа на экране и ставил его. Скоро все элементы были расположены так, что все они уместились в коробочку, ни один не накладывался на другой, и в коробочке не осталось незакрытых мест. Я удивлённо хмыкнул:

— И как у тебя это получилось?

— Я написал программу, она сделала поиск плотной упаковки и выдала результат.

Это немного расходилось с моими представлениями о программировании и программах. Для меня программа — это мобильное приложение в смартфоне или на планшете, а сейчас папа уверяет, что в этом чёрном окошке с зелёными буквами он увидел какой-то результат. Но там были только числа. Я понял бы, если бы программа нарисовала эти элементы головоломки и показала, как их складывать. Но папа продолжил:

— Пусть тебя не смущает такой вид программы. Во-первых, это всего лишь прототип. Во-вторых, я написал его «на коленке», как говорят программисты. В-третьих, это программа для решения всего одной конкретной задачи. Именно поэтому всё произошло так быстро, а результаты представляются в виде невразумительного набора чисел. Смотри: каждая пара чисел представляет собой координату левого верхнего угла элемента в коробочке, начиная от левого верхнего её угла, который имеет координаты 0 и 0. Элементы идут в том порядке, в каком я вносил их в программу. Всё просто.

Я не стал спорить. В этот момент подъехала Катя. Она посмотрела на результаты нашей работы и надулась, что мы не подождали её. Папа похлопал её по плечу и утешил: ничего особенного она не пропустила, зато сейчас можно начать решать загадку.

20