Математическая игра "Жизнь"
Описание
Игра "Жизнь" представляет собой один из простейших клеточных автоматов, т.е. систему (в данном случае программу), в которой колония фишек на поле изменяется по шагам в соответствии с определенными правилами. Правила "Жизни" были придуманы математиком Джоном Конуэем.
Мною были разработаны две программы, реализующие данную игру. Первая программа написана на языке Java в виде апплета. Вторая программа написана на языке JavaScript. Каждая программа расположена на отдельной странице по ссылке ниже (открываются в новом окне).
Игра "Жизнь" Java-апплет Игра "Жизнь" JavaScript-версия
Правила
Игра происходит на бесконечном двумерном поле, состоящем из клеток квадратной формы. Каждая клетка имеет восемь соседей: четырех с общей стороной и четырех с общим углом.
Перед началом эволюции создается начальная колония фишек. Для этого на выбранные клетки поля ставятся фишки. Все фишки равнозначны и одинаковы. Начальная колония называется нулевым поколением.
Дальнейшая игра происходит по шагам. Каждый шаг состоит в том, что из n-го поколения в результате эволюции формируется (n+1)-е поколение. Для этого к каждой клетке поля применяются три правила:
- Гибель от одиночества: Если на клетке есть фишка, и на соседних клетках менее двух фишек, то фишка гибнет (снимается с поля).
- Гибель от перенаселения: Если на клетке есть фишка, и на соседних клетках более трех фишек, то фишка гибнет (снимается с поля).
- Рождение: Если на клетке нет фишки, и на соседних клетках ровно три фишки, то на клетке рождается фишка (ставится на поле).
Правила применяются одновременно ко всем клеткам, поэтому рождение или смерть фишек не влияет на применение правил к другим клеткам на том же шаге. После применения правил на поле образуется следующее поколение колонии.
Игра заканчивается в одном из следующих случаев:
- Если в очередном поколении нет ни одной фишки (колония погибла);
- Если очередное поколение совпадает с одним из предыдущих (колония превратилась в периодическую);
- Частный случай предыдущего: очередное поколение совпадает с предыдущим (статическая колония).
Примеры колоний
Если колония совпадает с одной из предыдущих с точностью до сдвига (плоскопараллельного переноса), то говорят, что колония движется. Скорость движения на одну клетку в любом направлении за один шаг (скорость короля в шахматах) называется скоростью света.
Обратите внимание, что в силу изотропии игрового пространства, любая конфигурация после поворота на угол, кратный 90 градусов, не меняет своих свойств. Кроме того, если в процессе эволюции возникает симметрия, то в дальнейшем она не исчезает.
Устойчивые колонии
Следующие три конфигурации могут быть растянуты на произвольную длину с сохранением устойчивости.
Периодические колонии
Эти колонии при эволюции возвращаются в исходное состояние через определенное количество шагов.
Космические корабли
Это движущиеся колонии – через определенный период они принимают исходную форму, но со сдвигом относительно начального положения.
Глайдер скользит вправо вниз со скоростью 1/4 света, а остальные летят горизонтально вправо со скоростью 1/2 света. Обратите внимание на "искры" появляющиеся в процессе движения длинных кораблей. Если еще больше удлинить корабль, эти искры будут мешать его полету.
Другие конфигурации
Еще несколько любопытных колоний, имеющих долгое развитие, но в итоге эволюционирующих в периодические. Рассмотрите их эволюцию самостоятельно.
Полезные ссылки
Если вас заинтересовала эта игра, вы найдете много информации о ней на сайте FAM Life .