Роман Душкин - Шифры и квесты: таинственные истории в логических загадках
Вот что значит сын математика! Ни одной ошибки.
Потом, когда я лёг спать и перед сном размышлял, я подумал, что мог допустить ошибки при подсчётах. Например, сначала неправильно подсчитать количество какой-нибудь буквы, а потом где-нибудь неправильно сложить какие-либо два числа. В этом случае ошибки могли взаимоуничтожиться, и результат оказался бы правильным. Но вероятность такого развития ситуации я оценил, как низкую, поэтому думать об этом дальше не стал.
Весь следующий день я посвятил делению. Надо сказать, что в школе мне деление не очень удавалось. Нам рассказывали про достаточно сложную процедуру деления в столбик, так что числа друг на друга мне было поделить затруднительно. К тому же мы изучали деление только большего числа на меньшее, да и то без остатка. Хорошо ещё, что папа мне дополнительно рассказывал о делении, и делить можно любые числа друг на друга. Ну и показал мне, как делить меньшее число на большее. О процентах он мне тоже рассказал, и я нашёл это понятие полезным. Но практики у меня не было, и мне пришлось сейчас всё вспоминать и придумывать самостоятельно.
Но я был так увлечён задачей, что не мог оторваться. После того как я разделил количества букв «А» и «Б» на число 7037, я понял, что надо немного оптимизировать этот процесс. Для этого я составил таблицу умножения числа 7037 на все числа от 1 до 9. Этого стало достаточно, чтобы существенно ускорить процесс деления – теперь для понимания того, какую следующую цифру надо записать в результат, мне надо было только посмотреть в таблицу и найти наибольшее число, которое всё ещё меньше очередного делимого.
Итак, к вечеру у меня была новая таблица с количествами букв в тексте и приписанными к ним процентами. Я написал папе новую телеграмму:
ΠAΠA, R ΠOΔC4UTAΛ ΠPOV,EHTbI ΔΛR 6YKB. KAK OHU HA3bIBA|OTCR?
Ответ пришёл незамедлительно:
4ACTOTbI CUMBOΛOB. TbI MOΛOΔEV,!
Отлично. Теперь я буду знать, что эти проценты называются частотами. Перед сном я перерисовал таблицу начисто на отдельном листе бумаги. Вот, что у меня получилось:
Пока я ворочался и отходил ко сну, мне пришла в голову идея о том, как наглядно представить информацию из этой таблицы. Завтра утром буду рисовать график, на котором отложу рассчитанные проценты, то есть частоты символов. Думаю, что такой график поможет в деле расшифровки. После этого я подумал, что намного дальше продвинулся в науке о расшифровке, нежели герой рассказа «Золотой жук» Уильям Легран. С этой ободряющей мыслью я и заснул.
А наутро первым делом я взял клетчатый листок бумаги и нарисовал на нём такую диаграмму:
На ней я расположил символы в порядке убывания их частоты и при помощи столбиков отложил проценты. Выглядит очень неплохо. Эх, жалко, что на этом телефоне нет фотокамеры, чтобы послать фото папе. Что-то я стал даже гордиться собой, что нарисовал такое, а потому не удержался и написал папе очередное послание:
HAPUCOBAΛ ΓPAΦUK 4ACTOT. KAK OH HA3bIBAETCR?
И опять ответ пришёл практически сразу:
ΓUCTOΓPAMMA. R B WOKE OT TE6R!
Ободрённый, я пошёл завтракать. День обещал быть тяжёлым и насыщенным. Сегодня я планировал приступить к расшифровке.
Глава 5
Дед Трофим приготовил мне на завтрак молочный суп из земляники. Я был огорошен, удивлён и пребывал в восторженном настроении одновременно. Невозможно поверить, что этот почтенный старик на одной ноге смог утром сходить в лес и набрать для меня, своего правнука, земляники. Тем не менее эта ягода была на столе, и это меня очень радовало.
Самого деда Трофима не было дома. В этот день он обычно с утра уходил на свои деревенские посиделки с такими же древними людьми, как он сам. Он называл это «пойти в сельсовет», хотя что-то мне подсказывает, что никакого сельского совета здесь давно нет. Но они там решали деревенские дела, и дед Трофим каждую неделю ходил на деревенскую площадь. Видимо, это и можно назвать «советом». Я же пока никуда от дома и своего штаба не уходил. Да и ходить мне здесь было некуда.
Так что я съел с удовольствием земляничный суп, мысленно поблагодарил деда Трофима и вернулся к себе в штаб. Задача отца не давала мне покоя, и я был готов сидеть над ней, пока она не поддастся. Пошёл уже четвёртый день, как я нашёл зашифрованное послание, а я только-только подготовился к его расшифровке. Это меня напрягало и подстёгивало одновременно. Так что я был готов покончить со всем этим сегодня.
Вернувшись в штаб, я достал ту тетрадь, в которой обнаружил зашифрованное послание, и тщательно перекопировал его на отдельный лист бумаги. Эх, жалко, что у меня нет копировального аппарата. Он бы мне сейчас пригодился. Но раз тут каменный век, будем обходиться без цивилизации.
Затем я взял ещё один лист бумаги в клетку и нарисовал на нём таблицу, которая в точности повторяла использованную для подсчёта частотности букв. В ней было три столбца. В первый столбец я внёс все встреченные в шифрограмме символы. Во второй столбец я намеревался внести количества соответствующих символов. А третий столбец, как и положено, был предназначен для расчёта частот символов в процентах.
Вот, что у меня получилось:
Выделение отдельных букв заняло у меня не более получаса. Впрочем, в глазах после этого мельтешили завитки и кружочки. Тем не менее у меня в руках оказался алфавит шифровки, и я понял, что нескольких букв в этом тексте не хватает. Всего я выделил 28 различных символов. Это немного меня напрягло, поскольку теперь сложно однозначно сказать, на каком языке эта шифровка. Я точно знаю, что папа говорит на английском и на немецком языках, как на родных, но это сейчас. А что было, когда ему было десять лет? Он как-то упоминал, что изучать немецкий язык они начали во втором классе, то есть к моменту написания шифровки он изучал его уже два года. Поэтому не исключаю, что для пущей таинственности он вполне мог использовать немецкий язык, в нём как раз 28 букв. А вот английский вряд ли, поскольку его алфавит состоит всего лишь из 26 букв, да и изучать его папа начал намного позднее.
Надо было что-то придумать, чтобы определить язык шифровки. По крайней мере, сделать какое-нибудь подтверждённое предположение. Я хотел это сделать, чтобы убедиться, что дальнейшая работа имеет смысл, поскольку сам я немецкого языка не знаю. С мыслью о необходимости придумать метод проверки я отправился прогуляться. Я теперь всегда так делал, когда сталкивался со сложной задачей. Прогулка до берёзок чаще всего помогала.
Луг на заднем огороде был великолепен. Я шёл по колено в траве, а кое-где душистые колосья доходили мне и до пояса. Вокруг меня жужжали пчёлы и другие насекомые, а нос щекотали запахи лета. Это расслабляло, и мозг сам находил решение задачи.
Я дошёл до берёзок и немного посидел там. Деревья слабо шумели на ветру. Под ними была мягкая травяная подстилка из полусухих былинок, через которую кое-где пробивались тоненькие зелёные стебельки. На полянке между берёзами росло цветочное разнотравье. Всё вокруг умиротворяло.
И тут как будто бы молния ударила в мою голову. Я понял, что для того, чтобы понять, на русском языке составлена шифровка или нет, необходимо подсчитать частотности букв и сравнить их с теми, которые у меня уже есть. Если они будут похожи хотя бы примерно, то можно сказать, что шифровка, скорее всего, на русском языке. Ведь очевидно, что для других языков частотности будут другие.
Я пошёл назад в свой штаб. Нет, даже побежал, и пока я бежал, в голове крутились разные мысли о том, как же оптимизировать задачу. Добравшись до амбара, я понял, что сравнение частотностей лучше всего делать на графике. Можно построить вторую гистограмму и сравнить два графика. А лучше всего отложить точки на квадратной диаграмме, где каждая точка будет соответствовать одному и тому же столбику гистограммы для двух текстов. Если получившиеся точки будут примерно лежать на диагонали квадрата, то задача решена, и подтверждение русскому языку получено. Это сложно описать, и мне даже не хватало слов, чтобы размышлять об этом способе, но в голове уже крутились образы того, что надо сделать.
Я без промедления сел за подсчёт количеств символов в шифровке и их частотности. Через несколько часов у меня в руках была такая таблица:
Честно говоря, после нескольких часов подсчётов в глазах у меня рябило. Папа сделал весьма замысловатый шифр, хотя смысла в этом никакого не было. Потом я уже подумал, что надо было переобозначить каждый этот замысловатый завиток числом от 1 до 28 и считать именно числа, но хорошая мысль часто приходит после того, как работа сделана. Порадовало меня то, что папа сделал свою шифровку длиной ровно 300 символов, хоть делить было просто. Я делил количество символов на 3 и сразу получал проценты. Эх, папа стремился к совершенству уже в то далёкое время.