Впрочем, ладно. Не я ли сын математика? Сейчас что-нибудь придумаем. Так что я вернулся в амбар и продолжил подсчёты. Как оказалось, вчера я сделал всё самое сложное, и после буквы «Т» считать стало намного проще, поскольку все буквы в конце алфавита встречаются сравнительно редко. Так что через два с половиной часа я закончил и подвёл итог.
Итак, надо как-то проверить, что я нигде не ошибся. Думаю, что для этого надо просто сложить все количества букв и сравнить с первоначально подсчитанным количеством. Полученную в результате сложения сумму назовём контрольной, ведь с её помощью я буду контролировать точность моих вычислений.
Потом я подумал ещё и решил, что если я и ошибусь, то беды в этом не будет. Скажем, если ошибка будет менее одного процента от подсчитанного ранее общего количества букв, то я не буду обращать на это внимания, поскольку мне кажется, что такая небольшая ошибка не повлияет на окончательные результаты.
Я вновь взглянул на таблицу, в которой было 33 строки. Подумал, что надо теперь сложить все 33 числа. Это вполне можно сделать в столбик. Но, честно говоря, я сразу понял, что придётся много сил посвящать удержанию в памяти переносов разрядов. Если в каждой операции сложения будет один перенос разряда, то для 33 чисел их будет не менее 33. Видимо, так. Думаю, что если складывать сразу все 33 числа, то не избежать ошибок в процессе этого гигантского сложения. Надо придумать что-то другое.
Задача очень увлекла меня, и я уже ни про что другое думать не мог. Я попробовал складывать числа последовательно. Сначала первое со вторым. Потом к результату прибавил третье и так далее. Этот способ надёжный, но у него обнаружилась проблема. Результат растёт как на дрожжах, а прибавляемые к нему числа все мелкие. Это неудобно. Было бы намного удобнее складывать примерно одинаковые числа. По крайней мере, мне так было бы удобнее.
И решение пришло само собой. Я решил выписать все числа в столбик, а потом соединить дугами первое и второе, третье и четвёртое, пятое и шестое и так далее. Тридцать третье число остаётся без пары, но это не беда. Напротив каждой дуги записываю сумму двух чисел, объединённых дугой. Это получилось подсчитать так быстро, что я сам удивился. Для некоторых сложений я даже не пользовался столбиком, а считал в уме. В итоге у меня получился второй столбик из семнадцати чисел (шестнадцать сумм и семнадцатое – последнее число, которому не нашлось пары). К этому второму столбцу я снова применил эту же операцию и получил третий столбик, в котором было уже девять чисел. Ещё четыре таких шага, и у меня получилась контрольная сумма, которая в точности была равна 7037. Победа!
Вот что значит сын математика! Ни одной ошибки.
Потом, когда я лёг спать и перед сном размышлял, я подумал, что мог допустить ошибки при подсчётах. Например, сначала неправильно подсчитать количество какой-нибудь буквы, а потом где-нибудь неправильно сложить какие-либо два числа. В этом случае ошибки могли взаимоуничтожиться, и результат оказался бы правильным. Но вероятность такого развития ситуации я оценил, как низкую, поэтому думать об этом дальше не стал.
Весь следующий день я посвятил делению. Надо сказать, что в школе мне деление не очень удавалось. Нам рассказывали про достаточно сложную процедуру деления в столбик, так что числа друг на друга мне было поделить затруднительно. К тому же мы изучали деление только большего числа на меньшее, да и то без остатка. Хорошо ещё, что папа мне дополнительно рассказывал о делении, и делить можно любые числа друг на друга. Ну и показал мне, как делить меньшее число на большее. О процентах он мне тоже рассказал, и я нашёл это понятие полезным. Но практики у меня не было, и мне пришлось сейчас всё вспоминать и придумывать самостоятельно.
Но я был так увлечён задачей, что не мог оторваться. После того как я разделил количества букв «А» и «Б» на число 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 и сразу получал проценты. Эх, папа стремился к совершенству уже в то далёкое время.
На следующий день пошёл дождь, и дед Трофим сказал, что его старые кости ломит от непогоды, поэтому он весь день будет лежать. Я опять был предоставлен сам себе, поэтому засел в амбаре и прямо с утра начал разбираться с новым графиком. Теперь мне было ясно, что это в целом бесполезное упражнение, так как в шифровке маловато символов для нормального подсчёта частотности, но, поскольку я сам придумал метод и был горд за него и немного за себя, я хотел проверить.
И получился у меня новый интересный график. Я сам не ожидал, когда нарисовал его. Собственно, подтвердилась моя идея о том, что отмеченные точки будут лежать на диагонали. Откровенно выбивается из ряда только одна точка. Но я всё же склоняюсь к мысли о том, что в шифровке слишком мало букв. Впрочем, не факт, что немецкий язык не даст похожей картинки. Но для проверки я должен знать немецкий язык хотя бы на самом начальном уровне, а я знаю только алфавит. Эх…
Я был так возбуждён, что отправил папе новую телеграмму:
?OCTPOU? ?PA?UK COOTBETCTBUR 4ACTOT CUMBO?OB U 6YKB PYCCKO?O R3bIKA – ?O4TU ?PRMAR.
От папы мгновенно пришёл ответ:
OCTAHOBUCb, TbI ?E?AEWb TO, 4TO HE YME|OT CTY?EHTbI HA BTOPOM KYPCE UHCTUTYTA!
Ух ты! Да неужели?!
И после этого я начал расшифровку. Самое первое предположение, которое я сделал, было относительно символа в виде спирали. Это самый частый символ в шифровке, а в русском языке самой часто встречающейся буквой является «О». Вот я это и предположил. И на графике, кстати, отмечена точка с указанием пары символа и буквы русского языка. Затем я выписал на отдельный лист шифровку, в которой неизвестные мне символы заменил тонкими подчёркиваниями, а символ спирали заменил на своё первое предположение. Вот что у меня получилось:
Что ж, неплохо. На первый взгляд ничего интересного, но моё внимание привлекло слово «О_О» (в третьей строке шифровки). За него можно зацепиться, поскольку быстрый перебор вариантов для неизвестной буквы дал только две возможности: «ОКО» и «ОНО». Запомним…
Но пока я решил выдвинуть вторую гипотезу и заменить следующий по частоте символ в шифровке на вторую наиболее часто встречающуюся букву в русском языке. Это был символ, похожий на головастика с тремя хвостиками, опущенными вниз, а буква в русском языке по моей таблице была «Е». Я вписал букву «Е» на позиции, которые соответствовали этому символу. Вот что получилось на втором шаге:
К сожалению, это мне ничего не дало. Пришло время попробовать ту гипотезу, которую я выдвинул относительно слова «О_О». Вряд ли папа использовал слово «ОКО», хотя он вполне мог это сделать, поскольку даже в те далёкие времена был вполне экстраординарен и себе на уме. Но попробуем сначала слово «ОНО», так что заменим символ, похожий на букву «Н» этой самой буквой «Н». Вот что получается:
Кое-что уже начинает прорисовываться. Первое слово шифровки что-то напоминает. Эх, был бы сейчас у меня доступ в Интернет или электронный словарь, в котором можно искать слова по образцу, задавая нужные буквы. Я быстро расшифровал бы всё это. А так придётся тратить много времени на подбор. Тем не менее надо использовать то, что есть.
Кстати, я совсем забыл про чемоданчик! Вдруг там что-то припрятано на этот счёт? Я слез на первый этаж и открыл чемодан. Конечно же! Вот и словарь. Так… Это орфографический словарь русского языка. Надо же, совсем старое издание. Ну хоть что-то есть. И это опять только подтверждает то, что папа всё подстроил. Но мысль о том, что он начал подстраивать это много лет назад, когда он даже ещё представить себе не мог моё появление на свет, не давала мне покоя. Как же так?