Навигация

• Онлайн: 2



Яндекс
games/num_sys/play.txt · Последнее изменение: 06.08.2026 18:24 — nozdr

Играем с системами счисления

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

Пока мне видится несколько подходов:

  1. прямое использование редких систем счисления;
  2. неочевидные переводы чисел из одной системы в другую;
  3. составление слов-выражений из буквенных чисел систем счисления;
  4. комбинирование разных подходов.

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

Приведу несколько примеров.

Москва

Представьте, что мы играем мы в какую-то игру, по дороге попадается такая картинка:

Часы в Суздальском Кремле

Это реальные часы на Суздальском Кремле. Первое документальное упоминание об этих часах встречается в переписной книге Богородице-Рождественского собора за 1682 год: «На той же колокольнице часы боевые, перечастные в 8 колоколов». За их работой следил специальный человек — «часоводец».

Главная особенность циферблата — использование букв древнерусского алфавита для обозначения чисел. Такая система счисления была распространена на Руси до реформы Петра I в 1721 году. Чтобы не перепутать букву с цифрой, над ней ставили специальный знак — титло (в виде волнистой галочки или двух точек).

Похожие часы были не только в Суздале. Вот часы на башне Спасо-Преображенского Собора в Нижегородском Кремле:

В общем, порадовались мы и пошли играть дальше. И вдруг по ходу игры натыкаемся на такое:

Москва

И теперь, вспомнив в качестве подсказки циферблат с буквами, легко увидеть, что это очень похоже на те самые древнерусские цифры – «цифирь». Чтобы «расшифровать», подставляем вместо букв числовые значения:

Цифирь

и получаем: `москва = 40+70+200+20+2+1 = 333`. Прикольно, правда? :) хотя и не очень соответствует тогдашним правилам составления чисел.

На самом деле в записи чисел подобными непозиционными системами обычно принято сначала писать старшие разряды. То есть запись числа 333 должна бы была выглядеть как-то так: `333 = 300 + 30 + 3 = тлг`. Загадать число 333 буквами тл҃г. – не очень интересно. А вот со словом МОСКВА получилось намного красивее, хотя это скорее не запись числа, а арифметическое выражение, то есть прям самая настоящая математическая задачка с использованием древнерусской системы счисления.

  • https://azbyka.ru/converter – Конвертер церковнославянских, греческих, еврейских и римских чисел

MIX+CD

Или, например, проходим мы веболомку и видим такую картинку:

Если сразу не придёт в голову, что это римские числа, то на это должны навести пара неявных подсказок из CSS. Во-первых, это написано довольно популярным шрифтом «Times New Roman», а во-вторых, стиль шрифта – курсив, то есть «Italic».

Выходит, это обычное арифметическое выражение, записанное римскими числами, и надо посчитать его результат, чтобы получить ответ. M=1000, I=1, X=10, MIX = 1000+(-1+10) = 1009. C - это 100, D – это 500, CD = -100+500 = 400. Ну и для кайфа записать ответ римскими же числами. В результате получим:

  • `MIX+CD = 1009+400 = 1409 = MCDIX`

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

В моей старой веболомке 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 ряда, нажмём кнопки там, где стоят единички и – вуаля!

  • `110000001111111111101110_2 -> [[1,1,0,0,0,0],[0,0,1,1,1,1],[1,1,1,1,1,1],[1,0,1,1,1,0]] `

Можете попробовать поиграться с другими паттернами:

Разные слова из шестнадцатеричных цифр

На компьютере очень часто применяются шестнадцатеричные коды. Их можно увидеть, просматривая содержимое исполняемых файлов, работая с цветами в вебе или графических программах, да много где ещё. Давайте подумаем, какие слова можно составить из шестнадцатеричных цифр. Вы уже видели, как получилось 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 букв:

  • sizeof zodiac adidas doodle bobcat tabaco cobalt collab baffle biface fabled blazed babels battle bladed labels tables gabled albedo cables atleet
  • 512E0F 20D1AC AD1DA5 D00D1E B0BCA7 7ABAC0 C0BA17 C011AB BAFF1E B1FACE FAB1ED B1A2ED BABE15 BA771E B1ADED 1ABE15 7AB1E5 6AB1ED A1BED0 CAB1E5 A71EE7

А почему из шести? Потому что если приписать к ним спереди значок #, то получим цвет в формате RGB:

  • #512E0F #20D1AC #AD1DA5 #D00D1E #B0BCA7 #7ABAC0 #C0BA17 #C011AB #BAFF1E #B1FACE #FAB1ED #B1A2ED #BABE15 #BA771E #B1ADED #1ABE15 #7AB1E5 #6AB1ED #A1BED0 #CAB1E5

И наш кофе станет вот таким: #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-ричную систему со следующим набором цифр:

  • 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ

У нас теперь есть полный алфавит и можно составлять вообще любые слова и загадки на их основе.

36-ричная система

Например, такая «простая» загадка:

  • `N O Z D R_36 = ?`

Простая - потому что нам нужно именно что просто перевести 36-ричное числов в обычное десятичное (т.к. основание результата не указано, считаем его по умолчанию = 10). Т.к. это позиционная система счисления, то буква в каждой позиции является коэффициентом при основании (36), возведённом в степень разряда буквы. Короче, берём числовое значение буквы и домножаем его на 36 в соответствующей степени:

  • `N O Z D R_36 = [N=23, O=24, Z=35, D=13, R=27] =`
  • `= 23*36^4 + 24*36^3 + 35*36^2 + 13*36^1 + 27*36^0 =`
  • `= 38 631 168 + 1 119 744 + 45 360 + 468 + 27 = 39 796 767_10`.

Всё действительно очень просто :)

Или задачка наоборот:

  • `991 378 157_10 = ?_32`

Здесь уже 32-ричная система. Делим число на 32, пока делится и затем записываем остатки в обратном порядке, заменяя их буквами из таблички выше.

  • `991378157 ÷ 32 = 30 980 567 (13` ост`) → D`
  • `30980567 ÷ 32 = 968 142 (23` ост`) → N`
  • `968142 ÷ 32 = 30 254 (14` ост`) → E`
  • `30254 ÷ 32 = 945 (14` ост`) → E`
  • `945 ÷ 32 = 29 (17` ост`) → H`
  • `29 ÷ 32 = 0 (29` ост`) → T`
  • Получаем `991 378 157_10 = T H E E N D_32 = ` The end

Конвертер из любой системы в любую систему

Перевод систем счисления предоставлен сайтом calcus.ru


Инструменты страницы

Инструменты пользователя