"Жизнь" Конвея и другие клеточные автоматы

Публикация № 1829240 22.03.23

Разработка - Математика и алгоритмы

Игра Жизнь Конвей Game of Life Клеточный Автомат

Я думаю, нет нужды представлять математика Джона Конвея и его "Game of Life" - игру "Жизнь". Предлагаю вспомнить эту игру, а также другие "жизне"-подобные клеточные автоматы. К статье приложен файл с реализацией этой игры.

Об игре

История Game of Life началась даже не с Джона Конвея, а с Джона фон Неймана - основоположника сегодняшней компьютерной архитектуры (архитектура фон Неймана, в противоположность гарвардской архитектуре). В процессе доказательства существования самовоспроизводящихся машин он смоделировал автомат, работающий на клеточной доске. Радикально упростив этот автомат, Джон Конвей получил набор правил, которые и стали основой для игры "Жизнь".

Правила из Википедии:

  • Место действия игры — размеченная на клетки плоскость, которая может быть безграничной, ограниченной или замкнутой.
  • Каждая клетка на этой поверхности имеет восемь соседей (окрестность Мура), окружающих её, и может находиться в двух состояниях: быть «живой» (заполненной) или «мёртвой» (пустой).
  • Распределение живых клеток в начале игры называется первым поколением. Каждое следующее поколение рассчитывается на основе предыдущего по таким правилам:
    • в пустой (мёртвой) клетке, с которой соседствуют три живые клетки, зарождается жизнь;
    • если у живой клетки есть две или три живые соседки, то эта клетка продолжает жить; в противном случае (если живых соседей меньше двух или больше трёх) клетка умирает («от одиночества» или «от перенаселённости»).
  • Игра прекращается, если
    • на поле не останется ни одной «живой» клетки;
    • конфигурация на очередном шаге в точности (без сдвигов и поворотов) повторит себя же на одном из более ранних шагов (складывается периодическая конфигурация)
    • при очередном шаге ни одна из клеток не меняет своего состояния (частный случай предыдущего правила, складывается стабильная конфигурация)

Несмотря на достаточно простые правила, существует великое множество интересных конфигураций, возникающих в процессе игры:

Очевидно, что максимальная скорость распространения популяции - 1 клетка за 1 ход (по горизонтали, вертикали или диагонали). Логично, что она получила название скорость света.

Удивительно, но игра имеет отношение к самым разным наукам: квантовой физике, электротехнике, химии, даже биологии - у некоторых ящериц окраска чешуек формируется по похожим принципам

Нельзя не упомянуть об эмблеме хакеров, содержащей в себе планер - двигающуюся фигуру. 

 

 

Эта фигура за каждые 4 хода смещается на 1 клетку по диагонали.  Таким образом планер двигается со скоростью 1/4 скорости света.

С помощью планеров можно конструировать счётчикилогические вентили ИИЛИНЕ. С использованием планеров можно доказать, что «Жизнь» в качестве вычислительной машины является полной по Тьюрингу.

О реализации

Первая проблема, с которой сталкивается любой, кто собрался реализовать эту игру - поле. Так как прямоугольное поле имеет границы, то как должна развиваться колония клеток на границе? Есть два подхода - первый: считать, что за границей поля нет и не может быть живых клеток, и второй: соединить противоположные края, превратив прямоугольник в тор. Обычно используется второй вариант - планер, вылетев за нижний край, вернется сверху. 

Основных подходов к реализации алгоритмов тоже два. 

Первый подход заключается в создании двумерного массива по размеру поля, элемент массива соответствует клетке поля. Автор этих строк когда-то использовал в качестве такого массива видеопамять VGA. Очевидно, что а) при таком подходе поле ограничено доступной памятью, б) алгоритм игры содержит обход по двумерному массиву, его производительность значительно падает при увеличении поля, в) обычно скорость выполнения почти не зависит от заполненности поля. Второй подход вместо массива для поля предполагает массив для клеток. Элемент массива содержит координаты клетки. Потенциально с помощью такого подхода можно иметь в игре "бесконечное" поле. Но в этом случае а) скорость и объем необходимой памяти зависит от количества клеток в популяции, б) появляется проблема быстрого поиска клеток по координатам.

В предлагаемой реализации игры используется второй подход, для хранения клеток используется Соответствие, ключом которого являются координаты клетки. Потенциальный размер поля - 1000000*1000000. На экране видима только часть поля - окно, которое можно "перемещать" по полю.

 
 Пример игры

Еще один интересный алгоритм на основе запроса описан в Игра "Жизнь" в одном запросе

Аналогов игры в интернете полно, в том числе и на Инфостарте: раз, два, три ... Но игры на основе клеточных автоматов не ограничиваются указанными выше правилами. А что если изменить количество соседей?

 

Другие клеточные автоматы

Предположим, что новая клетка рождается (birth) если у нее 3 соседа, а выживает (survival) если имеет 2 или 3 соседей. Тогда правила для игры "жизнь" описываются формулой B3/S23. Меняя в этой формуле цифры, мы получим другие правила и другие игры, со своими закономерностями и интересными эффектами.

 
День и ночь (B3678 / S34678)
 
 Пример осциллятора и движущаяся "бабочка"

Есть интересная особенность: поле можно "инвертировать", тогда конфигурация "мертвых" клеток будет вести себя так же, как и бывшая конфигурация "живых клеток".

 
Жизнь без смерти (B3 / S012345678)

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

 
 Во что превращается планер
 
HighLife (B36 / S23)

Во многом похожа на "Жизнь". Здесь интересен репликатор - конфигурация клеток которая создает свои копии по обеим сторонам, эти копии - свои копии, которые сталкиваются, уничтожаются, после чего остаются два экземпляра удаляющиеся друг от друга.

 
 Репликтор

Семена (B2 / S)

Здесь ни одна из клеток не выживает, но перед смертью может дать жизнь новой клетке. Интересно наличие фотонов, движущихся со скоростью света. Сталкиваясь, фотоны могут погибнуть, а могут породить другие фотоны (чем не физика элементарных частиц!))).

 
 Фотоны

Morley (B368 / S245)

Эта игра примечательна наличием простого паровоза, двигающейся фигуры, оставляющей за собой дым. За 170 шагов он перемещается на 13 клеток

 
Паровоз

 

В прилагаемой к статье игре пользователь может выбрать любую игру из вышеуказанного списка, или создать игру по своим правилам.

 

 

Прочие виды правил перечислены здесь, и здесь, а еще здесь.

 

Игра тестировалась в тонком клиенте 8.3.22.1709.

Как всегда, приветствуются замечания / дополнения / комментарии.

 
 Некоторые из прочих моих публикаций  

  

Скачать файлы

Наименование Файл Версия Размер
"Жизнь" Конвея и другие клеточные автоматы:

.erf 15,94Kb
6
.erf 15,94Kb 6 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. RustIG 1691 22.03.23 16:49 Сейчас в теме
2. Alxby 1061 22.03.23 17:23 Сейчас в теме
(1)Ага. Вроде бы ничего особенного, а затягивает.
3. aSHA-1 26.03.23 09:26 Сейчас в теме
а шаблоны будут? хотя бы как у Гарднера?
5. Alxby 1061 26.03.23 12:26 Сейчас в теме
(3)Возможно. Но потом. Сейчас на очереди другие игры.Кстати, для тех, кто не знает, - Мартин Гарднер - автор научно-популярных книг по математике, несколько глав в них он посвятил этой игре.
7. aSHA-1 26.03.23 14:28 Сейчас в теме
(5)Буду ждать, подписался
4. AndreyCh75 26.03.23 09:53 Сейчас в теме
Спасибо! Прям ностальгия, писал в свое время на дельфи) А потом сидел перед монитором и медитировал)
6. Alxby 1061 26.03.23 12:39 Сейчас в теме
(4)Первый раз я ее написал на asm86 под DOS. Потом - на Delphi с ассемблером на поле 1000*1000. По сравнению с DOS, возможность создать двумерный массив на мегабайт - это было круто! Про всякие там DirectX, OpenGL и прочие Unity тогда не знали, поэтому графика тоже была на ассемблере.
Прикрепленные файлы:
dicwork; manuel; tsmult; Somebody1; AndreyCh75; +5 Ответить
8. YA_523322930 02.04.23 18:45 Сейчас в теме
Слушай, мы же 1сники, мы в этом вообще не шарим, это все для настоящих программистов и математиков, а нам лучше что-нибудь про НДС, это наш потолок. Ну или там как зп рассчитывать, вот и вся математика, доступная 1сникам.
9. Alxby 1061 05.04.23 06:56 Сейчас в теме
(8)1с - это всего лишь инструмент. Умение на 1с решать нестандартные задачи (в том числе, но не обязательно игры) - признак мастерства. Вы же не против повышать свое мастерство?
G_116449793522595596167; +1 Ответить
10. YA_523322930 05.04.23 20:49 Сейчас в теме
(9) Мастерство у 1сника - это клепать управляемые формочки с кнопочками, настраивать обмены и периодически перезагружать сервер бд, все высокие технологии и математика уже за гранью 1с, там уже программирование.
11. Alxby 1061 05.04.23 22:23 Сейчас в теме
(10)Я надеюсь, большинство не разделяют Ваше мнение
Климов; G_116449793522595596167; +2 Ответить
12. dicwork 07.04.23 10:55 Сейчас в теме
Я писал такую программу в 1980 году на языке ПЛ/1. Набивал на перфокартах. Выводил на печать на бумагу. С этого началось мое увлечение программированием.
13. Климов 26.04.23 16:49 Сейчас в теме
Студентов-практикантов заставляю "Жизнь" писать.
А слабо множество Мандельброта на 1С нарисовать? Тоже затягивающая штука...
14. Alxby 1061 26.04.23 20:58 Сейчас в теме
(13)Множество Мандельброта я рисовал на Си. В 1С как вывести результат? В табличном документе слишком низкое разрешение получится. Да и производительность математики здесь под вопросом. А студенты на чем "Жизнь" пишут?
15. Климов 27.04.23 16:23 Сейчас в теме
(14) А кому легко! :-) На Си и я писал. Или на Паскале? Давно это было...
А "Жизнь" студенты на 1С пишут. Или крестики-нолики. Несмотря на кажущуюся несерьёзность эти задачи хорошо учат разделять клиентскую и серверную части, вычисления и и визуализацию.
16. Alxby 1061 28.04.23 08:30 Сейчас в теме
(15)Абсолютно согласен, для целей обучения написание игр - почти идеальный вариант. Но, занудства ради, в моих играх, в основном, вся работа происходит на клиенте, серверной части почти нет :).
Оставьте свое сообщение

См. также

Плоский "Кубик Рубика"

Игры Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Вы можете собрать кубик Рубика? Я - только с помощью инструкции:). Попробуйте справиться с его плоским аналогом.

1 стартмани

сегодня в 12:30    561    3    Alxby    2    

5

Пасьянс Марии Стюарт (пасьянс Медичи) - попробуй изменить свою судьбу

Игры Платформа 1С v8.3 Россия Абонемент ($m)

Игра - пасьянс Марии Стюарт. Есть возможность создавать свои расклады, обмениваться раскладами и менять картинки карт.

1 стартмани

05.05.2023    1677    1    sandr13    0    

7

Тетрис

Игры Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Абонемент ($m)

Когда под рукой только 1С и как-то нужно скоротать время, можно поиграть в Тетрис.

1 стартмани

29.04.2023    2001    5    user1693438    0    

9

Головоломка Пентамино

Игры Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Широко известная головоломка, основанная на составлении фигур из составных частей. В данной реализации в качестве фигуры используется прямоугольник, а в качестве составных частей - пентамино, тетрамино или гексамино. Реализованы классические варианты головоломки и вариант со случайной генерацией фигур.

1 стартмани

18.04.2023    3224    3    Alxby    9    

18

Игра Sumplete

Игры Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Разминка для мозга на устный счет.

1 стартмани

27.03.2023    1489    0    kyzma-kyzmi4    6    

4

Игра Жук. Заставь его бегать как можно дольше!

Игры Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

10.03.2023    2618    2    kyzma-kyzmi4    2    

12

Игра "Только вперед!" + мини-библиотека для игр по сети

Игры Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Правила этой игры поймет любой дошкольник, но выиграть в нее по силам не каждому взрослому...

1 стартмани

01.03.2023    3672    2    Alxby    9    

20

Карточная игра "Подкидной дурак"

Игры Платформа 1С v8.3 Абонемент ($m)

Продолжаем тему игр на платформе 1С:Предприятие, классический "Подкидной дурак".

1 стартмани

20.02.2023    1696    4    oldcopy    6    

9

Игра "Змейка" на 1С (управляемые формы)

Игры Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Игра Змейка, сделанная на 1С. В игре 7 уровней, но игра сделана так, что любой разработчик без проблем сможет нарисовать любую карту на свой вкус, для этого достаточно добавить макет и закрасить красным цветом границы и препятствия!

1 стартмани

27.01.2023    4367    15    APTEM_SLV    18    

18

Девятка (Девятки) - карточная игра для платформы 1С на управляемых формах с открытым кодом

Игры Платформа 1С v8.3 Управляемые формы Абонемент ($m)

Популярная карточная игра Девятка (Девятки, Domino, Spoof, Fan Tan, Parliament, Sevens) для любой 1С конфигурации (даже абсолютно пустой) для любой версии платформы 8, поддерживающей управляемые формы(тонкий клиент, веб-клиент).

1 стартмани

25.01.2023    2027    1    GODCRM    3    

9

Игра "Девятнадцать"

Игры Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Представляю вашему вниманию игру из школьных времен - "девятнадцать". Когда-то не один десяток листков в клеточку были исписаны во время этой игры...

1 стартмани

19.01.2023    3614    11    Alxby    40    

28

Игра Балда (одномерный вариант)

Игры Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Одномерный или "устный" вариант игры Балда.

1 стартмани

05.12.2022    3022    2    Alexei_Siva    1    

14

Игра "Пять букв"

Игры Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Абонемент ($m)

В одном известном банке сейчас проходит игра Пять букв. Набросал небольшую обработку по поиску слова.

1 стартмани

22.11.2022    2086    1    Pim    2    

3

Игра "Slime 600"

Игры Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Игра по типу камень-ножницы-бумага. Сложность: 1/10.

1 стартмани

09.11.2022    2053    0    player69871    4    

4

Игра-головоломка 5 Букв (Wordle русский аналог)

Игры Платформа 1С v8.3 Абонемент ($m)

Игра-головоломка 5 Букв (Wordle русский аналог). Поможет развить словарный запас.

1 стартмани

20.06.2022    3701    2    o.kovalev    0    

3

Карточная игра "Дурак"

Игры Платформа 1С v8.3 Россия Абонемент ($m)

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

1 стартмани

07.06.2022    6408    19    user676027_svikator    16    

46

Помощь в игре 5 Букв от Тинькофф банка

Игры Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Хотите выиграть в эту игру? Поможет эта обработка.

1 стартмани

02.06.2022    5399    2    o.kovalev    13    

5

Игра СУДОКУ 8.3. ОФ, УФ + солвер (решатель)

Игры Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Обработка "Судоку" для прокачки скилла и просто тем, кто искал алгоритм DFS на 1С как и я. Обычные и управляемые формы

1 стартмани

08.02.2022    4697    5    maximus_2712    5    

4

Ханойские башни

Игры Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Решение головоломки "Ханойская башня" с визуализацией в среде 1С.

5 стартмани

23.12.2019    10545    3    13vap    0    

7

Блэк Джек

Игры Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Блэк джек, написанный на платформе 1С 8.2 (обычные формы).

1 стартмани

07.10.2019    10398    1    Azamatex    2    

5

Игра "Логика"

Игры Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Старая советская «Логика» для 1С УФ. Угадайте комбинацию цветов, загаданную компьютером.

1 стартмани

13.06.2019    12391    2    legenda-nsh    0    

4

Игра в кости "1000" (сетевая)

Игры Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Аналог игры в кости 1000 (классика). Работает на управляемом приложении, любой конфигурации и без неё. Тестировал на платформе 1С:Предприятие 8.3 (8.3.10.2667) и выше.

1 стартмани

07.05.2019    18610    2    APTEM_SLV    5    

3

Игра "Арканоид" (Javascript фреймворк Phaser). HTML 5 Сanvas + WebGL. Управляемые формы (ТОНКИЙ, ТОЛСТЫЙ клиент), Обычные формы

Игры Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Общеизвестная игра "Арканоид", доступная для запуска в 1с. Выполнена в виде обработки, запускаемой из папки, в которой расположены файлы проекта (html, js файла и картинки) Любые конфигурации на обычных формах, управляемых формах (Тонкий + Толстый клиент). УПП, БП 2.0, 3.0. После открытия обработки нажимаем мышью на область экрана игры, точнее, нажимаем на кнопку "СТАРТ" (области игры). Начинается игра. Управление мышью.

1 стартмани

04.05.2019    12992    8    pvlunegov    2    

7

Игра Змейка с автопилотом

Игры Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Игра Змейка с автопилотом реализована в парадигме автоматного программирования.

1 стартмани

23.04.2019    13011    2    RonX01    17    

14

Логическая игра "Камушки"

Игры Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Логическая игра.

1 стартмани

05.04.2019    11124    0    ranis888    5    

4

Розыгрыш к 1 апреля (№2) [Расширение] УТ11

Игры Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

Меняем язык надписей на формах для пользователя с помощью сервиса яндекс-переводчик.

1 стартмани

26.03.2019    11034    5    noprogrammer    2    

8

Розыгрыш к 1 апреля [Расширение]

Игры Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Небольшой розыгрыш к 1 апреля.

1 стартмани

19.03.2019    10921    4    noprogrammer    13    

7

Magic 8 ball (Магический шар 8)

Игры Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Mystic 8 ball, шар судьбы, шар вопросов и ответов, шар предсказаний. Помогает в принятии важных решений

1 стартмани

13.03.2019    12839    7    Смешной 1С    3    

12

Конфигурация-игра "Сто к одному" (1С + html + js + css)

Игры Платформа 1С v8.3 Россия Абонемент ($m)

Конфигурация/база для игры в "Сто к одному" с архитектурой "Ведущий - игровое поле". Конфигурация/база используется для всего цикла игры: 1. Хранение вопросов/ответов по типам игры (Простая, Двойная, Тройная, Игра наоборот и Большая игра); 2. Управление игрой (роль ведущего) - заполнение имён команд, формирование набора вопросов, запуск раундов, выполнение действий на игровом поле, завершение приложения игрового поля; 3. Игровое поле (роль игровое поле) - выполнение действий команд ведущего. Платформа: 8.3.12.1567

1 стартмани

25.02.2019    13796    7    Rabot    4    

10

Решение судоку

Игры Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

07.02.2019    11901    5    dobrodeev    4    

4

Игра пасьянс (домино) "Пирамида"

Игры Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Играть в домино и раскладывать пасьянс или собирать пасьянс фишками от домино – выбирайте, как вам больше нравится. Работает на любой конфигурации, даже без конфигурации. Тестировал на платформе 1С 8.3 (8.3.13.1513), конфигурация Зарплата и кадры государственного учреждения, редакция 3.1 (3.1.8.137).

1 стартмани

20.12.2018    17371    1    APTEM_SLV    4    

2

Инструмент для проведения мероприятия Secret Santa (или Секретный Дед Мороз)

Игры Платформа 1С v8.3 Абонемент ($m)

Данная конфигурация поможет Вам провести мероприятие "Секретный санта". Причем абсолютно анонимно.

1 стартмани

12.12.2018    11251    1    EXAN    2    

3

Игра "Бродяга"

Игры Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Полноценный рогалик на 1С (обычные формы, платформа не ниже 8.2.19, для любого типа платформы).

1 стартмани

15.11.2018    12052    7    Caliban    14    

11

Пятнашки

Игры Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Игра "Пятнашки" на управляемых формах.

14.11.2018    11232    0    supermen    0    

4

Игра "Подземелье" (HTML5 canvas + javascript). Управляемые + Обычные формы

Игры Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Простейшая игра на HTML5 + canvas + javascript. Управляемые + Обычные формы. Запуск во всех конфигурациях, во всех видах интерфейсов (Упр. формы Такси, упр. формы во вкладках, обычные формы). В 1С используется встроенный объект ПолеHTMLДокумента. УПРАВЛЕНИЕ ПЕРСОНАЖЕМ с клавиатуры (клавиши движения WASD). Персонаж двигается, собирает ключи, открывает двери.

1 стартмани

13.08.2018    19148    20    pvlunegov    21    

23

Морской бой

Игры Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Игра-обработка для 1С, Морской бой

1 стартмани

23.07.2018    12569    6    tbkvpvl    4    

4

Тетрис

Игры Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Обработка-игра для 1С, тетрис

1 стартмани

23.07.2018    12956    19    tbkvpvl    2    

3

Сколько лепестков у розы?

Игры Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Сколько лепестков у розы? Простая игра, смысл которой заключается в том, чтобы угадать (понять логику), сколько лепестков у розы.

1 стартмани

03.07.2018    11823    0    Denis_CFO    0    

4

Игра-головоломка "Лейцвет" (1С:Предприятие 8.3), управляемая форма для всех типов клиентов

Игры Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

23.05.2018    12049    1    bobank    0    

2