Математический феномен: формула, которая описывает всё
Чем ещё удивит математика? Вот как выглядит формула всего, и вот как это использовать в личных целях. Алгоритм с иллюстрациями.
Феноменальное неравенство
Посмотрите на одно занимательное число. Это классика. Возможно, вам знакомая.
48584506361897134235820959624942020445814005879832445494830930850619347047088099284506447 69865524364849997247024915119110411605739177407856919754326571855442057210445735883681829 82375413963433822519945219165128434833290513119319995350241375876523926487461339490687013 05622958132194811136853395355652908500238750928568926945559742815463865107300491067230589 33586052544096664351265349363643957125565695936815184334857605266940161251266951421550539 55451915378545752575659074054015792900176596796548006442782913148854825991472124850635268 6630476300
Через минуту поймёте, почему этот цифровой ряд вызывает чертовское любопытство. Он связан с одним фантастическим неравенством.
Формулу – в студию:
где ⌊ ⌋
– пол вещественного числа – округление до целой части в меньшую сторону, а mod
— оператор остатка от деления.
Возьмите координатные оси x
и y
и для каждой точки в плоскости подставьте координаты x
и y
, тогда эта формула скажет, нужно ли окрашивать позицию. Неравенство показывает, какую часть пространства заполнить цветом.
Если вы построите диаграмму, то получите это:
Разве не поразительно, что график формулы выглядит как изображение её само́й?
Самореферентная формула Таппера правомерно занимает место в списке причудливых вещей математики. Впервые Джефф Таппер опубликовал её в 2001 году на конференции SIGGRAPH, когда демонстрировал собственную разработку – программу для рисования графиков GrafEq.
У внимательных в голове наверняка проскользнул вопрос: что за магическое k
по оси y
? С x
область понятна – от 0 до 106. На самом деле, k
– то длинное число. То есть, по оси y
мы забрались за облака. Когда абстрагируетесь от верхних и нижних значений и рассмотрите маленькую область от k
до k + 17
, вы увидите неравенство, по которому создали график.
Но потрясает в формуле Таппера не образование собственного изображения, а построение всего. Пройдитесь вдоль оси y
, и увидите, как это неравенство сформирует каждый возможный рисунок из чёрных и белых пикселей размерами 106 на 17. Значит, изображения в рамках такого формата найдёте в определённых местах на графике. Не только формулу Таппера, но и всевозможные другие.
Например, мы отыскали такое значение числа k
, при котором в формуле вместо символов остатка от деления появились смайлики:
А также приготовили вариант с Пакманом, поедающим формулу, и приведением:
Формула всего в действии
Настало время узнать, как из желаемой картинки получить заветное число.
В первую очередь возьмите изображение в пиксельном виде формата 106 на 17. Покажем на примере логотипа Библиотеки программиста:
Начинайте с левого нижнего угла и двигайтесь вверх. Если пиксель чёрный, то записывайте 1, в противном случае – 0. Когда подойдёте к концу первого столбца, переходите ко второму. Направление прежнее – снизу вверх.
На рассматриваемой картинке вначале будет масса нулей. В конечном счёте получим такое длинное двоичное число:
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000011111111100000000000110011000 000000001000010000000000011001100000000000111110000000000000000000000000000000000000000000000 111111000000000000000100000000000000000100000000000000000000000000000111100000000000011001100 000000000100001000000000001000010000000000011001100000000000011110000000000000000000000000001 001111000000000110110011000000001001000010000000011011001100000000011111111000000000000000000 000000000000000000000000000000000000000001111111111111000111111111111111001111111111111110011 111111111111100111111111111111001111000000001110011110111111111100111111111111111001111000000 101110011111111111111100111111111111111001111000000001110011110011001111100111101111011111001 111001100111110011110000011111100111111111111111001111111111111110011111111111111100011111111 11111
Переведите результат в десятичную систему счисления и умножьте на 17. Поздравляем, вы получили значение k
.
Для логотипа Библиотеки:
275920946718088023480723936896165056360565819683866987796214204083704967426367028838171010577 240995701759158859651200376151267820757234464431427249106688058522782455726480988406439648562 620760834048362915566450772662232356183743837870137689132679620381296484548019451375155482604 298164929327123340746339483037052696814767795015822491105174814111467113651849715266381480786 0373249589248
Осталось построить график.
С помощью этой формулы декодируют растровые изображения, зашифрованные в константе k
. Так что смело воспроизводите картинки. Чтобы получить изображение, инвертируйте последовательность шагов алгоритма.
Бонус
С хардкором закончили. А что делать, когда нет желания провести выходные за переводом изображения в двоичное число? Используйте готовый инструмент, и эта процедура займёт минуту. Там вы загружаете изображение нужного формата или рисуете по клеточкам онлайн.