вторник, 12 июля 2011 г.

Life


Говорят, всё гениальное - просто. Сегодня я в этом убедился.

В поисках разминки для мозгов я бороздил просторы интернета, и набрёл на невзрачный снимок экрана на сайте http://screenshots.debian.net:
Я слышал о "Жизни" и раньше, даже видел работающие примеры этой игры, но не полагал, что вся её суть кроется всего лишь в паре утверждений.

Пакет zivot успешно установился, однако работал довольно странно: смена поколений проходила лишь по нажатию Enter, фигуры развития клеток не были похоже на фигуры "Жизни" Конвея. Тогда я скачал исходный код пакета. Несколько раз прочитав исходник, я понял как работает программа — Fortran оказался не таким уж и сложным, вдобавок идея действительно проста. Был очень удивлён тому, что бо́льшая часть кода отвечает за отрисовку "Вселенной" — по сути, всего лишь рамок. Код же, ответственный за развитие и смену поколений, занимал всего несколько строк.

Итак, что же такое "Жизнь"? Прежде всего — гениальная находка учёного. Простейший автомат, отображающий жизнь, смерть и смену поколений клеток. Были введены лишь два правила:
* жизнь зарождается в клетке, рядом с которой ровно три живые клетки;
* если у живой клетки есть две или три живые соседки, то эта клетка продолжает жить; в противном случае (если соседей меньше двух или больше трёх) клетка умирает (от «одиночества» или от «перенаселённости»).

Вы спросите, что же можно вывести, используя лишь эти два правила? Неожиданно много. Изобретение повлекло за собой многие необычные открытия и повлияло на развитие различных наук. Да-да, всего лишь исчезающие и появляющиеся клеточки на поле.

Идея мне очень понравилась, и я довольно быстро перебил код на язык Си, немного подправив исходник Фортрана для полного соответствия правилам Конвея. Итак, добро пожаловать: https://github.com/JIghtuse/c-life. Планирую добавить более удобную расстановку первого поколения. Предложения и замечания принимаются.

Заинтересовались? Немного информации (довольно интересной) есть здесь. Одни из самых продвинутых и старых (однако от этого не перестающих быть интересными) эмуляторов "Жизни": xlife, golly.

PS. Да, github — очень удобная вещь.

PPS. glider (первая картинка поста) с некоторых пор является эмблемой хакеров.

Комментариев нет: