Итак, нам нужно придумать, каким образом использовать свойства систем счисления для создания интересных задачек и головоломок.
Пока мне видится несколько подходов:
При прямом использовании редких систем счисления числа выглядят совсем не так, как мы привыкли их видеть. И поэтому если просто записать какое-то число, например, в древнегреческой или системе Майя, то это будет прям как самый натуральный шифр.
Приведу несколько примеров.
Представьте, что мы играем мы в какую-то игру, по дороге попадается такая картинка:
Это реальные часы на Суздальском Кремле. Первое документальное упоминание об этих часах встречается в переписной книге Богородице-Рождественского собора за 1682 год: «На той же колокольнице часы боевые, перечастные в 8 колоколов». За их работой следил специальный человек — «часоводец».
Главная особенность циферблата — использование букв древнерусского алфавита для обозначения чисел. Такая система счисления была распространена на Руси до реформы Петра I в 1721 году. Чтобы не перепутать букву с цифрой, над ней ставили специальный знак — титло (в виде волнистой галочки или двух точек).
Похожие часы были не только в Суздале. Вот часы на башне Спасо-Преображенского Собора в Нижегородском Кремле:
В общем, порадовались мы и пошли играть дальше. И вдруг по ходу игры натыкаемся на такое:
И теперь, вспомнив в качестве подсказки циферблат с буквами, легко увидеть, что это очень похоже на те самые древнерусские цифры – «цифирь». Чтобы «расшифровать», подставляем вместо букв числовые значения:
и получаем: `москва = 40+70+200+20+2+1 = 333`. Прикольно, правда? :) хотя и не очень соответствует тогдашним правилам составления чисел.
На самом деле в записи чисел подобными непозиционными системами обычно принято сначала писать старшие разряды. То есть запись числа 333 должна бы была выглядеть как-то так: `333 = 300 + 30 + 3 = тлг`. Загадать число 333 буквами тл҃г. – не очень интересно. А вот со словом МОСКВА получилось намного красивее, хотя это скорее не запись числа, а арифметическое выражение, то есть прям самая настоящая математическая задачка с использованием древнерусской системы счисления.
Или, например, проходим мы веболомку и видим такую картинку:
Если сразу не придёт в голову, что это римские числа, то на это должны навести пара неявных подсказок из CSS. Во-первых, это написано довольно популярным шрифтом «Times New Roman», а во-вторых, стиль шрифта – курсив, то есть «Italic».
Выходит, это обычное арифметическое выражение, записанное римскими числами, и надо посчитать его результат, чтобы получить ответ. M=1000, I=1, X=10, MIX = 1000+(-1+10) = 1009. C - это 100, D – это 500, CD = -100+500 = 400. Ну и для кайфа записать ответ римскими же числами. В результате получим:
Опять мы видим обычное математическое выражение, но здесь сбивает с толку, что числа по написанию совпадают с известными словами и уводят мысль в сторону от арифметики.
В моей старой веболомке 2018, посвящённой наступающему тогда 2018 году была похожая задачка, заспойлерю её тут. Там была запись «MIX+MIX». Так вот, 1009+1009 как раз равно 2018 :) и ответ был MMXVIII.
А теперь представим, что мы снова играем в какую-то игру или проходим квест. На одном из этапов нам встречается панель с кнопками и нужно включить на панели несколько из них, чтобы что-то открыть. Кнопок аж 24 штуки. Перебирать все возможные комбинации всей жизни не хватит. Но у нас есть подсказка – кружка горячего кофе с надписью HEX2BIN. Обычно такой аббревиатурой называют утилиты или функции, которые осуществляют перекодировку из 16-ричной системы (HEX) в двоичную (BIN): hexadecimal to binary. И, например, немного ранее нам сказали, что «в кофе вся суть».
Похоже, что нам требуется преобразовать какое-то шестнадцатеричное число в двоичное (состоящее из 0 и 1 - выкл-вкл) и получить тем самым «карту» включения кнопок. Где же взять это число, если его нигде нет? Значит, надо попытаться где-то найти что-то, что похоже на 16-ричное число. Кружка с этим самым кофе, стоящая прямо перед нами, кагбэ намекает… В общем, можно "легко увидеть, что..." буквы слова КОФЕ, записанного латинскими буквами COFFEE уж очень сильно напоминают шестнадцатеричные цифры :) `C O F F E E → C 0 F F E E_16 → 110000001111111111101110_2`. И мы легко получили нужную нам последовательность. Запишем цифры в 4 ряда, нажмём кнопки там, где стоят единички и – вуаля!
Можете попробовать поиграться с другими паттернами:
На компьютере очень часто применяются шестнадцатеричные коды. Их можно увидеть, просматривая содержимое исполняемых файлов, работая с цветами в вебе или графических программах, да много где ещё. Давайте подумаем, какие слова можно составить из шестнадцатеричных цифр. Вы уже видели, как получилось C0FFEE. А можно ли составить ещё слова? А предложение из таких слов?
В шестнадцатеричной системе счисления есть следующие цифры: 0123456789ABCDEF. Составлять слова из десятичных цифр сложновато, а букв вроде бы совсем мало. Но если привлечь технологию LEET, то нам уже будет доступно гораздо большее число «букв». Потому что некоторые цифры напоминают некоторые буквы. Например, вот так: G=6=9, I=1, L=l=1, O=0, S=5, T=7, Z=2.
Итого, у нас получается вот такой набор букв, из которых можно составить свой словарь, а потом уже подумать, какие из этих слов нас могут заинтересовать, чтобы сделать из них задачку: ABCDEFGILOSTZ. 13 букв, 4 гласные – довольно хороший наборчик. Например, из этого набора можно составить более 2000 английских слов, даже одно 10-буквенное: decalogist (DECAl09157). Но нам могут быть более интересны слова покороче, например из 6 букв:
А почему из шести? Потому что если приписать к ним спереди значок #, то получим цвет в формате RGB:
И наш кофе станет вот таким: #C0FFEE. Не совсем кофейный цвет, конечно, но в этом и прелесть. Не зря я добавил вверху на LED-панели с кнопками колорпикер, показывающий текущий цвет. Можете проверить, если не верите :)
И из таких слов можно составлять целые предложения. Например, DEBA5E 1ABE15 D0EA5E 7AB1E5 = debase labels do ease tables. Смысла немного, не более чем во фразе "The quick brown fox jumps over the lazy dog". Но зато этим предложением можно зашифровать последовательность из 4 цветов. В общем, такому способу кодирования словами шестнадцатеричных чисел можно найти разные применения.
Можно вместо E использовать 3. Количество слов не изменится, а вот цвет может. Вот одно и то же слово, записанное с разным вариантом использования Е и 3: #A71EE7 #A71337.
Хороший пример использования зашифрованных шестнадцатеричными цветами слов был в 10-й задаче веболомки WM.
Как мы видели выше, недостаток букв сказывается на качестве получаемых слов. В 16-ричной системе было 16 цифр: 0123456789ABCDEF, из них только 6 полноценных букв, этого мало, приходится прибегать к разным обходным решениям. Но ведь ничто нам не мешает взять систему бОльшего порядка, чтобы в ней уместились все нужные нам буквы.
Возьмём для примера 36-ричную систему со следующим набором цифр:
У нас теперь есть полный алфавит и можно составлять вообще любые слова и загадки на их основе.
Например, такая «простая» загадка:
Простая - потому что нам нужно именно что просто перевести 36-ричное числов в обычное десятичное (т.к. основание результата не указано, считаем его по умолчанию = 10). Т.к. это позиционная система счисления, то буква в каждой позиции является коэффициентом при основании (36), возведённом в степень разряда буквы. Короче, берём числовое значение буквы и домножаем его на 36 в соответствующей степени:
Всё действительно очень просто :)
Или задачка наоборот:
Здесь уже 32-ричная система. Делим число на 32, пока делится и затем записываем остатки в обратном порядке, заменяя их буквами из таблички выше.
Перевод систем счисления предоставлен сайтом calcus.ru