• Онлайн: 2
Сказка о том, как я за ёлками ходил
Ох уж эти сказочники..."
Точно не скажешь, но давненько это было… Ещё в староглиняные времена, в одной пластилиновой местности… Нет, не так. В те далекие времена, когда транспортом служили гужевые повозки… Или не… Собрались как то раз друзья на охоту, зашли в лес, а там… Или так: (мрачно) «Одна кружка была навечно прикована…» Не, снова не то.
Сидел я как-то в школе на скучном уроке… Во!
Итак, сидел я как-то в школе на скучном уроке и от нечего делать пробовал на бумажке в клеточку раскрашивать квадратики. Правила раскраски придумал такие:
- начинаю обходить из верхнего левого угла;
- каждую строчку прохожу слева направо;
- если сверху и слева от текущей клеточки квадратики одинаково закрашены, то я и текущую клеточку тоже закрашиваю, иначе перехожу к следующей.
Начал я с пустого листа, и получилась вот такая занятная картинка:
Мне она показалась лесом из перевёрнутых ёлок :) Стал пробовать заполнять верхнюю строчку и левый столбец какими-то первоначальными данными, то есть от балды их по-разному закрашивать – и начали вырисовываться другие, не менее интересные картинки:
Это я сейчас по памяти делаю такие картинки на компьютере, поэтому всё так красиво и ровненько выглядит. А тогда на бумажке мои изыскания выглядели как-то так:
Помню, что пробовал по-разному хитрым образом раскрашивать треугольники и «дорожки», которые между ними проходят, и это давало совершенно новый эффект – лес из ёлок пропадал, а появлялись антенны, направленные в космос!
После того скучного урока я несколько раз (на других таких же скучных уроках) возвращался к этой теме и отправлялся за ёлками. Как сейчас помню, были мысли попробовать использовать не только 0 и 1, а больше цифр, и каждую цифру раскрашивать своим цветом. С 0, 1 и 2 тогда не очень удачно получилось, поэтому продолжать изыскания в этом направлении не стал, ибо всё сводилось снова к двум цифрам. Наверное, надо было сделать правило, чтобы было 2+2=0.
Как я узнал чуть позже, моё самое первое правило 0+0=1+1=1 0+1=1+0=0, задуманное при раскрашивании ячеек, называлось логической равнозначностью или эквиваленцией (эквивалентностью). И оказывается, всяких таких правил, по которым с двоичными цифрами можно что-то делать, в логике и математике существует довольно много.
Я помню, что тогда же у меня возникла идея попробовать при раскраске применить все эти правила, вдруг тоже получится что-то интересное? А вот получилось у меня что-то или нет – уже не помню. В своих бумажных архивах я таких черновиков не нашёл, надо будет как-нибудь поискать среди бекапов программ. Вдруг, повезёт?
А пока я вам хочу сказать, что даже при применении одного простейшего правила к изначально пустому пространству, можно получить очень красивые закономерности. Здесь, кстати, можно вспомнить пару великолепных «игр» – «Жизнь» Джона Хортона Конуэя и «Воспроизведение» Станислава Улама.
Простор для опытов с другими правилами и исходными данными – огромный, так что флаг вам в руки, как говорится, и барабан на шею.
«На том и кончилась сказка. А вот теперь начинается чистая правда.»
В общем, надо будет попробовать всё это сделать, чтобы, как говорится, закрыть гештальт. Так что «как царём, значит, заделаюсь — первым делом, первым делом… чё первым делом? А, пианину! А то сто это за зызнь, без пианины?..»
Бинарные часы
Кстати, о пианине. Когда-то давным-давно я учился программировать на javascript. Хотелось запрограммировать что-то графическое и динамичное. Два самых простых способа сделать что-то в динамике – это либо в цикле гонять случайные числа, либо привязаться к таймеру. Одной из моих первых попыток и была сделать часики, чтобы показать время. Просто цифры показывать легко, но ведь надо же сделать красиво и чтобы были всякие цветные квадратики. Пришла мысль сделать часы в двоичном виде. Сделал :)
Так что пианина есть. Но я ещё планирую про бинарные и похожие на них часики написать отдельное исследование, тема уж очень интересная с точки зрения ММЦК.
Пианина
Конечно же, я был не первый и отнюдь не последний, кто задумался о красоте, лаконичности и даже пользе бинарных кодов.
В основе двоичной системы лежит двоичный код, то есть возможность записывать числа при помощи двух различных знаков. Но двоичный код – это совсем не то же самое, что и двоичная система счисления. В двоичной системе числа записываются при помощи знаков 0 и 1 в порядке возрастания: 0,1,10,11,100,101,110,111,1000,1001… Графически её можно изобразить вот так:
Оказалось, что мои бинарные часики – это так называемая двоично-десятичная форма представления чисел, когда каждая цифра числа десятичной системы записывается в двоичном виде. На рисунке вверху в рамочке как раз тот самый кусочек двоичного кода, которым кодируют двоично-десятичную форму.
Но числа не обязательно располагать в порядке возрастания. Например, один товарищ по имени Фрэнк Грэй предложил двоичный код, в котором числа упорядочиваются таким образом, что каждое последующее число отличается от предыдущего лишь одним битом.
Такое определение было точным, но неоднозначным. Народ стал это дело осмысливать и насоздавал кучу бинарных кодов, подходящих под определение Грэя. Получился не один код, а прям целое их семейство. Изначально предложенный код Грэя стали называть зеркальным кодом Грэя, а остальные по именам авторов, их предложивших.
Вот как выглядят визуально некоторые из этих кодов:
Одни из этих картинок напомнили шагающие пушки из звёздных войн, другие каких-то ископаемых слонов, третьи – уток с утятами или страусов. Фантазия – она такая, забористая…
«Ну, дворец! Ну, хорош! С лебедями! С чучелами!» В общем, классные получались то ли паровозики, то ли машинки, то ли слоники. Ну а если их нарисовать подлиннее и поставить вертикально, то вырастал целый лес разных по конструкции ёлок! И стал я с этими кодами играться. Помню, что написал на бейсике программу для ПК Вектор-06Ц, где зеркально отражал эти картинки и получались многоступенчатые ракеты и деревья разной формы. Но пока я эту прогу не нашёл. Если не найду – новую напишу. Но попозже :)
Кстати, посмотрел на эту картинку и пришла в голову идея сделать прикольную игрушку-головоломку. Причём, можно её как запрограммить, так и сделать в реале! Надо не забыть попробовать!
Ещё я параллельно пытался рисовать пути, которыми можно соединить узлы получающихся картинок. Если отразить по вертикали получающиеся пути, то получались прям натуральные ёлочки!
На базе этих моих наработок уже много лет позже мне пришло в голову сделать Бинарный календарь из двоичных ёлочек:
Помнится, после всех этих паровозиков, ракет и деревьев я даже начал играться с троичной системой счисления. Но это уже будет совсем другая сказка. Как и сказка про путь к звёздам, которую я только планирую написать…
Короче, «он и в третий раз ходил за ёлкой, и добыл её… Но это было уже весной, и он отнёс ёлку обратно.»
Мораль сказки такая: чем бы дитя не тешилось, лишь бы не вешалось. Если есть свободное время, склонные к математике и программированию мозги и тяга к творчеству, то можно порисовать бинарные ёлочки :) Всех с Новым годом!