Игра «Жизнь» , также известная просто как «Жизнь» , представляет собой клеточный автомат, изобретенный британским математиком Джоном Хортоном Конвеем в 1970 году. [1] Это игра с нулевым участием игроков , [2] [3] это означает, что ее эволюция определяется его исходное состояние, не требующее дальнейшего ввода. Человек взаимодействует с Игрой Жизни, создавая начальную конфигурацию и наблюдая, как она развивается. Он является полным по Тьюрингу и может моделировать универсальный конструктор или любую другую машину Тьюринга .
Вселенная Игры Жизни представляет собой бесконечную двумерную ортогональную сетку квадратных ячеек , каждая из которых находится в одном из двух возможных состояний: живом или мертвом (или заселенном и незаселенном соответственно). Каждая ячейка взаимодействует со своими восемью соседями , то есть ячейками, соседними по горизонтали, вертикали или диагонали. На каждом этапе времени происходят следующие переходы:
Исходный шаблон представляет собой зародыш системы. Первое поколение создается путем одновременного применения вышеуказанных правил к каждой клетке семени, живой или мертвой; рождения и смерти происходят одновременно, и дискретный момент, в который это происходит, иногда называют тиком . [nb 1] Каждое поколение является чистой функцией предыдущего. Правила продолжают применяться неоднократно для создания следующих поколений.
Станислав Улам , работая в Лос-Аламосской национальной лаборатории в 1940-х годах, изучал рост кристаллов, используя в качестве модели простую решетчатую сетку . [7] В то же время Джон фон Нейман , коллега Улама в Лос-Аламосе, работал над проблемой самовоспроизводящихся систем . [8] : 1 Первоначальный проект фон Неймана был основан на идее, что один робот строит другого робота. Эта конструкция известна как кинематическая модель. [9] [10] Разрабатывая эту конструкцию, фон Нейман осознал огромную сложность создания самовоспроизводящегося робота и высокую стоимость обеспечения робота «морем деталей», из которого можно построить его реплику. . Нейман написал статью под названием «Общая и логическая теория автоматов» для Хиксонского симпозиума в 1948 году. [8] : 1 Улам был тем, кто предложил использовать дискретную систему для создания редукционистской модели самовоспроизведения. [8] : 3 [11] : xxix Улам и фон Нейман создали метод расчета движения жидкости в конце 1950-х годов. Основная концепция метода заключалась в том, чтобы рассматривать жидкость как группу дискретных единиц и рассчитывать движение каждой из них на основе поведения ее соседей. [12] : 8 Так родилась первая система клеточных автоматов. Как и решетчатая сеть Улама, клеточные автоматы фон Неймана двумерны, а его саморепликатор реализован алгоритмически. В результате получился универсальный копировальный аппарат и конструктор , работающий внутри клеточного автомата с небольшой окрестностью (соседями являются только те ячейки, которые соприкасаются; для клеточных автоматов фон Неймана — только ортогональные ячейки) и с 29 состояниями на ячейку. Фон Нейман предоставил доказательство существования того, что определенный образец может создавать бесконечные копии самого себя в данной клеточной вселенной, разработав конфигурацию из 200 000 ячеек, которая могла это делать. Эта конструкция известна как модель тесселяции и называется универсальным конструктором фон Неймана . [13]
Вдохновленный вопросами математической логики и частично работами Улама над играми-симуляторами, Джон Конвей в 1968 году начал проводить эксперименты с множеством различных двумерных правил клеточных автоматов. Первоначальной целью Конвея было создание интересного и непредсказуемого клеточного автомата. [3] По словам Мартина Гарднера , Конвей экспериментировал с различными правилами, стремясь создать правила, которые позволили бы шаблонам «по-видимому» расти без ограничений, в то же время затрудняя доказательство того , что какой-либо конкретный шаблон будет делать это. Более того, некоторые «простые исходные шаблоны» должны «разрастаться и изменяться в течение значительного периода времени», прежде чем принять статическую конфигурацию или повторяющийся цикл. [1] Позже Конвей писал, что основной мотивацией Жизни было создание «универсального» клеточного автомата. [14] [ нужен лучший источник ]
Игра впервые появилась публично в октябрьском выпуске журнала Scientific American за 1970 год в колонке Мартина Гарднера « Математические игры », основанной на личных беседах с Конвеем. Теоретически Игра «Жизнь» обладает мощью универсальной машины Тьюринга : все, что можно вычислить алгоритмически , можно вычислить в рамках «Игры жизни». [15] [2] Гарднер писал: «Из-за аналогий жизни с взлетом, падением и изменениями общества живых организмов, она принадлежит к растущему классу так называемых «игр-симуляторов» (игр, которые напоминают реальную жизнь). процессы)». [1]
С момента публикации «Игра жизни» вызвала большой интерес из-за удивительных путей развития закономерностей. Это дает пример возникновения и самоорганизации . [3] Версия жизни, включающая случайные флуктуации, использовалась в физике для изучения фазовых переходов и неравновесной динамики . [16] Игра также может служить дидактической аналогией , используемой для передачи несколько парадоксальной идеи о том, что дизайн и организация могут возникнуть спонтанно в отсутствие дизайнера. Например, философ Дэниел Деннетт широко использовал аналогию «вселенной» Игры Жизни, чтобы проиллюстрировать возможную эволюцию сложных философских конструкций, таких как сознание и свободная воля , из относительно простого набора детерминистских физических законов, которые могли бы управлять нашей Вселенной. . [17] [18] [19]
Популярности «Игры жизни» способствовало ее появление одновременно со все более дешевым доступом к компьютеру. На этих машинах игру можно было запускать часами, иначе ночью они остались бы неиспользованными. В этом отношении это предвещало более позднюю популярность фракталов , генерируемых компьютером . Для многих «Игра жизни» была просто задачей программирования: интересным способом использовать потраченные впустую циклы процессора . Однако для некоторых Игра Жизни имела более философский подтекст. На протяжении 1970-х годов и позже у него возник культ; текущие разработки зашли так далеко, что создали теоретические эмуляции компьютерных систем в рамках доски «Игра жизни». [20] [21]
В Игре Жизни встречается множество различных типов паттернов, которые классифицируются в зависимости от их поведения. К распространенным типам узоров относятся: натюрморты , которые не меняются от поколения к поколению; осцилляторы , возвращающиеся в исходное состояние через конечное число поколений; и космические корабли , которые перемещаются по сетке.
Самые ранние интересные закономерности Игры Жизни были обнаружены без использования компьютеров. Простейшие натюрморты и осцилляторы были обнаружены при отслеживании судеб различных небольших стартовых конфигураций с помощью миллиметровой бумаги , классных досок и физических игровых досок, например тех, что используются в Го . В ходе этого раннего исследования Конвей обнаружил, что R- пентамино не удалось стабилизироваться за небольшое количество поколений. Фактически, чтобы стабилизироваться, требуется 1103 поколения, и к этому времени его население составляет 116 человек, и оно произвело шесть ускользающих планеров ; [22] это были первые когда-либо обнаруженные космические корабли. [23]
Часто встречающиеся [24] [25] примеры (в том смысле, что они часто возникают из случайной начальной конфигурации клеток) трех вышеупомянутых типов паттернов показаны ниже: живые клетки показаны черным цветом, а мертвые клетки - белым. Период относится к количеству тиков, которые шаблон должен пройти, прежде чем вернуться к своей первоначальной конфигурации.
Пульсар [26] является наиболее распространенным осциллятором с периодом 3 . Подавляющее большинство встречающихся в природе осцилляторов имеют период 2, как мигалка и жаба, но известно, что существуют осцилляторы всех периодов [27] [28] [29] и осцилляторы с периодами 4, 8, 14, 15. , 30 и некоторые другие, как было замечено, возникают из-за случайных начальных условий. [30] Паттерны, которые развиваются в течение длительного периода времени, прежде чем стабилизироваться, называются Мафусаилами , первым из которых было обнаружено R-пентамино. Diehard — это паттерн, который в конечном итоге исчезает, а не стабилизируется, после 130 поколений, что, как предполагается, является максимальным для стартовых паттернов с семью или меньшим количеством ячеек. [31] Желуди требуется 5206 поколений, чтобы создать 633 клетки, включая 13 сбежавших планеров. [32]
Первоначально Конвей предположил, что ни одна структура не может расти бесконечно, т. е. что для любой начальной конфигурации с конечным числом живых клеток популяция не может вырасти за пределы некоторого конечного верхнего предела. В первоначальном появлении игры в «Математических играх» Конвей предложил приз в пятьдесят долларов (что эквивалентно 380 долларам в 2022 году) первому человеку, который сможет доказать или опровергнуть гипотезу до конца 1970 года. Приз был выигран в ноябре команда Массачусетского технологического института под руководством Билла Госпера ; «Gosper Glider Gun» производит свой первый планер 15-го поколения, а с тех пор еще один планер каждого 30-го поколения. В течение многих лет эта планерная пушка была самой маленькой из известных. [33] В 2015 году было обнаружено оружие под названием «Пушка-планер Симкина», которое выпускает планер каждые 120-е поколение, в котором меньше живых клеток, но которое распределено по большей ограничивающей рамке на своих концах. [34]
Позже были обнаружены модели меньшего размера, которые также демонстрируют бесконечный рост. Все три модели, показанные ниже, растут бесконечно. Первые два создают единый движок переключения блоков : конфигурация, которая оставляет после себя блоки натюрморта два на два, перемещаясь по вселенной игры. [35] Третья конфигурация создает два таких шаблона. Первый имеет всего десять живых клеток, что, как было доказано, минимально. [36] Второй умещается в квадрате пять на пять, а третий имеет высоту всего одну клетку.
Более поздние открытия включали другие стационарные орудия , из которых производятся планеры или другие космические корабли; пуховые поезда , которые движутся, оставляя за собой след из мусора; и грабли , которые двигают и выбрасывают космические корабли. [37] Госпер также построил первую модель с асимптотически оптимальной квадратичной скоростью роста , названную заводчиком или омаром , которая работала, оставляя после себя след из оружия.
Планеры могут интересным образом взаимодействовать с другими объектами. Например, если два планера стреляют по блоку в определенной позиции, блок переместится ближе к источнику планеров. Если три планера выстрелят правильно, блок отодвинется дальше. Эту память скользящего блока можно использовать для имитации счетчика . Можно построить логические элементы , такие как И , ИЛИ и НЕ , используя планеры. Можно построить шаблон, который действует как конечный автомат , подключенный к двум счетчикам. Он обладает той же вычислительной мощностью, что и универсальная машина Тьюринга , поэтому Игра Жизни теоретически столь же мощна, как и любой компьютер с неограниченной памятью и без ограничений по времени; оно полно по Тьюрингу . [15] [2] Фактически, в «Игре жизни» было реализовано несколько различных программируемых компьютерных архитектур [38] [39] , включая шаблон, имитирующий тетрис . [40]
Более того, шаблон может содержать набор орудий, стреляющих из планеров таким образом, чтобы создавать новые объекты, включая копии исходного шаблона. Можно построить универсальный конструктор, содержащий полный по Тьюрингу компьютер и способный создавать множество типов сложных объектов, включая большее количество своих копий . [2]
В 2018 году Адам П. Гушер обнаружил первое по-настоящему элементарное рыцарство, сэра Робина. [41] Рыцарский корабль — это космический корабль, который перемещается на две клетки влево на каждую клетку, которую он перемещает вниз (как конь в шахматах ), а не движется ортогонально или по диагонали 45 °. Это первая новая схема движения элементарного космического корабля, обнаруженная за сорок восемь лет. «Элементарный» означает, что его нельзя разложить на более мелкие взаимодействующие узоры, такие как планеры и натюрморты. [42]
Многие узоры в Игре Жизни со временем становятся комбинацией натюрмортов, осцилляторов и космических кораблей; другие закономерности можно назвать хаотическими. Паттерн может оставаться хаотичным в течение очень долгого времени, пока в конечном итоге не сформируется такая комбинация.
Игра «Жизнь» неразрешима , а это означает, что при наличии первоначального шаблона и последующего шаблона не существует алгоритма, который мог бы сказать, появится ли когда-либо более поздний шаблон. Учитывая, что Игра «Жизнь» является полной по Тьюрингу, это является следствием проблемы остановки : проблемы определения, завершит ли данная программа выполнение или продолжит работать вечно на основе начального ввода. [2]
До 2010-х годов все известные космические корабли могли двигаться только ортогонально или по диагонали, тогда как существование моделей движения, которые движутся подобно рыцарям, предсказывал Элвин Берлекамп с 1982 года. Космические корабли, которые не движутся ни ортогонально, ни по диагонали, обычно называют наклонными космическими кораблями [43] ] [44] . 18 мая 2010 года Эндрю Дж. Уэйд анонсировал первый наклонный космический корабль, получивший название «Близнецы», который создает копию самого себя на (5,1) дальше, одновременно уничтожая своего родителя. [45] [44] Этот шаблон повторяется в 34 миллионах поколений и использует ленту инструкций, состоящую из планеров, колеблющихся между двумя стабильными конфигурациями, состоящими из конструкционных рычагов Чепмена-Грина. Они, в свою очередь, создают новые копии шаблона и уничтожают предыдущую копию. В декабре 2015 года были построены диагональные версии Gemini. [46]
23 ноября 2013 года Дэйв Грин построил первый репликатор в «Игре жизни», который создает полную копию самого себя, включая ленту с инструкциями. [47] В октябре 2018 года Адам П. Гоучер завершил создание метаклетки 0E0P, метаклетки, способной к самовоспроизведению. Это отличалось от предыдущих метаячеек, таких как метапиксель OTCA от Brice Due, который работал только с уже построенными рядом с ними копиями. Метаячейка 0E0P работает, используя конструкторы для создания копий, имитирующих запрограммированное правило. [48] Фактическое моделирование «Игры жизни» или других правил соседства Мура осуществляется путем моделирования эквивалентного правила с использованием соседства фон Неймана с большим количеством состояний. [49] Название 0E0P является сокращением от «Zero Encoded by Zero Population», что указывает на то, что вместо того, чтобы метаячейка находилась в «выключенном» состоянии, имитируя пустое пространство, метаячейка 0E0P удаляется, когда ячейка входит в это состояние, оставляя пустое пространство. космос. [50]
Судя по большинству случайных исходных образцов живых клеток на сетке, наблюдатели обнаружат, что популяция постоянно меняется по мере смены поколений. Закономерности, возникающие из простых правил, можно считать формой математической красоты . Небольшие изолированные подструктуры без начальной симметрии имеют тенденцию становиться симметричными. Как только это произойдет, симметрия может стать более богатой, но ее нельзя будет потерять, если только соседний подшаблон не подойдет достаточно близко, чтобы нарушить ее. В очень немногих случаях общество в конечном итоге вымирает, при этом все живые клетки исчезают, хотя этого может и не произойти в течение очень многих поколений. Большинство первоначальных паттернов со временем выгорают, создавая либо стабильные фигуры, либо паттерны, которые вечно колеблются между двумя или более состояниями; [51] [52] многие из них также производят один или несколько планеров или космических кораблей, которые улетают на неопределенное время от исходного местоположения. Из-за правил, основанных на ближайшем соседе, никакая информация не может проходить через сетку со скоростью, большей, чем одна ячейка в единицу времени, поэтому эта скорость называется скоростью света клеточного автомата и обозначается c .
Ранние паттерны с неизвестным будущим, такие как R-пентамино, побудили программистов писать программы для отслеживания эволюции паттернов в Игре Жизни. Большинство ранних алгоритмов были похожими: они представляли шаблоны в виде двумерных массивов в памяти компьютера. Обычно используются два массива: один для хранения текущего поколения, а другой для вычисления его преемника. Часто 0 и 1 обозначают мертвые и живые клетки соответственно. Вложенный цикл for поочередно рассматривает каждый элемент текущего массива, подсчитывая живых соседей каждой ячейки, чтобы решить, должен ли соответствующий элемент массива-преемника иметь значение 0 или 1. Массив-преемник отображается. Для следующей итерации массивы могут поменяться ролями, так что массив-преемник на последней итерации станет текущим массивом на следующей итерации, или можно скопировать значения второго массива в первый массив, а затем обновить второй массив из первого. массив снова.
Возможны различные незначительные улучшения этой базовой схемы, и существует множество способов избежать ненужных вычислений. Ячейка, которая не изменилась на последнем временном шаге и ни один из соседей которой не изменился, гарантированно не изменится и на текущем временном шаге, поэтому программа, которая отслеживает, какие области активны, может сэкономить время, не обновляя неактивные. зоны. [53]
Чтобы избежать решений и разветвлений в цикле подсчета, правила можно переставить с эгоцентрического подхода внутреннего поля относительно его соседей на точку зрения научного наблюдателя: если сумма всех девяти полей в данной окрестности равна трем, состояние внутреннего поля ибо следующее поколение будет жизнью; если сумма всех полей равна четырем, внутреннее поле сохраняет свое текущее состояние; и любая другая сумма уничтожает внутреннее поле.
Для экономии памяти хранилище можно сократить до одного массива плюс два строковых буфера. Один буфер строки используется для расчета состояния преемника для строки, затем второй буфер строки используется для расчета состояния преемника для следующей строки. Затем первый буфер записывается в его строку и освобождается для хранения состояния-преемника для третьей строки. Если используется тороидальный массив, необходим третий буфер, чтобы можно было сохранить исходное состояние первой строки массива до тех пор, пока не будет вычислена последняя строка.
В принципе, поле «Игры Жизни» бесконечно, но память компьютеров ограничена. Это приводит к проблемам, когда активная область выходит за границу массива. Программисты использовали несколько стратегий для решения этих проблем. Самая простая стратегия — предположить, что каждая ячейка вне массива мертва. Это легко запрограммировать, но приводит к неточным результатам, когда активная область пересекает границу. Более сложный трюк состоит в том, чтобы считать левый и правый края поля сшитыми вместе, а также верхний и нижний края, образуя тороидальный массив. В результате активные области, перемещающиеся по краю поля, снова появляются на противоположном краю. Неточность все равно может возникнуть, если рисунок станет слишком большим, но патологических краевых эффектов не будет. Также можно использовать методы динамического распределения памяти, создавая все более крупные массивы для хранения растущих шаблонов. Иногда подробно изучается игра «Жизнь» на конечном поле; некоторые реализации, такие как Golly , поддерживают выбор стандартного бесконечного поля, поля, бесконечного только в одном измерении, или конечного поля с выбором топологий, таких как цилиндр, тор или лента Мёбиуса .
В качестве альтернативы программисты могут отказаться от представления поля «Игра жизни» в виде двумерного массива и использовать другую структуру данных, например вектор пар координат, представляющих живые клетки. Это позволяет шаблону беспрепятственно перемещаться по полю, пока популяция не превышает размер массива живых координат. Недостаток заключается в том, что подсчет живых соседей превращается в операцию поиска или поиска в хеш-таблице, что замедляет скорость моделирования. Эту проблему также можно в значительной степени решить с помощью более сложных структур данных. [ нужна цитата ]
Для исследования больших закономерностей на больших временных глубинах могут быть полезны сложные алгоритмы, такие как Hashlife . Существует также метод реализации Игры Жизни и других клеточных автоматов с использованием произвольных асинхронных обновлений, в то же время точно имитируя поведение синхронной игры. [54] Примеры исходного кода , реализующие базовый сценарий «Игры жизни» на различных языках программирования, включая C , C++ , Java и Python , можно найти на сайте Rosetta Code . [55]
С момента создания Игры Жизни были разработаны новые подобные клеточные автоматы. Стандартная Игра Жизни обозначается в виде строки правил как B3/S23. Клетка рождается, если у нее ровно три соседа, выживает, если у нее есть два или три живых соседа, и умирает в противном случае. Первое число или список чисел — это то, что необходимо для рождения мертвой клетки. Второй набор — это требования, необходимые живой клетке для выживания до следующего поколения. Следовательно, B6/S16 означает «клетка рождается, если есть шесть соседей, и живет, если есть один или шесть соседей». Клеточные автоматы на двумерной сетке, которые можно описать таким образом, известны как клеточные автоматы, подобные жизни . Другой распространенный автомат, похожий на жизнь, Highlife , описывается правилом B36/S23, поскольку наличие шести соседей в дополнение к правилу B3/S23 исходной игры приводит к рождению. HighLife наиболее известна своими часто встречающимися репликаторами. [56] [57]
Существуют дополнительные жизнеподобные клеточные автоматы. Подавляющее большинство из этих 218 различных правил [58] создают вселенные, которые либо слишком хаотичны, либо слишком пустынны, чтобы представлять интерес, но большое подмножество действительно демонстрирует интересное поведение. Дальнейшее обобщение приводит к изотропному пространству правил с 2102 возможными правилами клеточного автомата [59] (Игра Жизни снова является одним из них). Это правила, которые используют ту же квадратную сетку, что и правила Life-like, и ту же окрестность из восьми ячеек, а также инвариантны при вращении и отражении. Однако в изотропных правилах при определении будущего состояния ячейки могут учитываться положения соседних ячеек относительно друг друга, а не только общее количество этих соседей.
Некоторые варианты Игры Жизни изменяют геометрию Вселенной, а также правила. Вышеупомянутые варианты можно рассматривать как двумерный квадрат, поскольку мир двумерен и расположен в виде квадратной сетки. Были разработаны одномерные квадратные варианты, известные как элементарные клеточные автоматы [60] , и трехмерные квадратные варианты, а также двумерные шестиугольные и треугольные варианты. Также был сделан вариант с использованием апериодических мозаичных сеток. [61]
Правила Конвея также можно обобщить так, что вместо двух состояний, живого и мертвого , будет три или более. Переходы между состояниями затем определяются либо с помощью системы взвешивания, либо с помощью таблицы, определяющей отдельные правила перехода для каждого состояния; например, разноцветная таблица правил Mirek's Cellebration и семейства правил Weighted Life включают образцы правил, эквивалентных игре в жизнь.
Паттерны, относящиеся к фракталам и фрактальным системам, также можно наблюдать в некоторых вариациях, подобных Жизни. Например, автомат B1/S12 генерирует четыре очень близких приближения к треугольнику Серпинского при применении к одной живой ячейке. Треугольник Серпинского также можно наблюдать в «Игре жизни», исследуя долгосрочный рост бесконечно длинной линии живых клеток толщиной в одну клетку [62] , а также в Highlife, Seeds (B2/S) и Правило Вольфрама 90 . [63]
Иммиграция — это вариант, который очень похож на «Игру жизни», за исключением того, что есть два штата , часто обозначаемые двумя разными цветами. Всякий раз, когда рождается новая клетка, она принимает состояние «включено», которое составляет большинство из трех клеток, которые ее породили. Эту функцию можно использовать для изучения взаимодействия между космическими кораблями и другими объектами в игре. [64] Другой аналогичный вариант, называемый QuadLife, включает в себя четыре различных состояния включения. Когда новая ячейка рождается от трех разных соседей, она принимает четвертое значение, а в противном случае, как и иммиграция, она принимает мажоритарное значение. [65] За исключением различий между клетками, оба эти варианта действуют идентично Игре Жизни.
Различные техники музыкальной композиции используют «Игру жизни», особенно в MIDI- секвенциях. [66] Существует множество программ для создания звука из шаблонов, созданных в Игре Жизни. [67] [68] [69]
Компьютеры использовались для отслеживания и моделирования «Игры жизни» с момента ее первого опубликования. Когда Джон Конвей впервые исследовал развитие различных стартовых конфигураций, он отслеживал их вручную, используя доску с черными и белыми камнями. Это было утомительно и чревато ошибками. Первая интерактивная программа Game of Life была написана в ранней версии ALGOL 68C для PDP-7 MJT Guy и SR Bourne . Результаты были опубликованы в октябрьском номере журнала Scientific American за 1970 год вместе с заявлением: «Без его помощи некоторые открытия об игре было бы трудно сделать». [1]
Цветная версия «Игры жизни» была написана Эдом Холлом в 1976 году для микрокомпьютеров Cromemco , а изображение этой программы заполнило обложку июньского номера журнала Byte за 1976 год . [70] Появление цветной графики на базе микрокомпьютеров от Cromemco стало причиной возрождения интереса к игре. [71]
Две ранние реализации «Игры жизни» на домашних компьютерах были написаны Малкольмом Банторпом на BBC BASIC . Первый был в январском номере журнала Acorn User за 1984 год , а Банторп последовал за ним, выпустив трехмерную версию в майском номере 1984 года. [72] Сьюзен Степни, профессор компьютерных наук в Университете Йорка , в 1988 году развила эту идею, создав Life on the Line — программу, которая генерировала одномерные клеточные автоматы. [73]
Сейчас в сети существуют тысячи программ Game of Life, поэтому полный список здесь не приводится. Ниже приводится небольшая подборка программ, претендующих на особую известность, например популярность или необычные функции. Большинство этих программ включают в себя графический интерфейс пользователя для редактирования и моделирования шаблонов, возможность моделирования нескольких правил, включая «Игру жизни», а также большую библиотеку интересных шаблонов «Игры жизни» и других правил клеточных автоматов.
Google реализовал пасхальное яйцо Game of Life в 2012 году. Пользователям, выполняющим поиск по этому запросу, на странице результатов поиска отображается реализация игры. [76]
Визуальный роман Anonymous;Code включает в себя базовую реализацию Игры Жизни, связанную с сюжетом романа. Ближе к концу Anonymous;Code для завершения игры в Game of Life необходимо ввести определенный узор, который появляется на протяжении всей игры в виде татуировки на героине Момо Айзаки (галактика Кока, тот же узор, который используется в качестве логотипа для программа Game of Life с открытым исходным кодом Golly).
Я почти уверен, что это потому, что вы случайно создали реализацию того, что иногда называют NaiveLife (поскольку это распространенная ошибка, которую допускают многие люди, впервые кодирующие CGoL):
{{cite web}}
: CS1 maint: numeric names: authors list (link)С появлением микрокомпьютеров и графических плат Cromemco Life стала любимой программой отображения для видеомониторов и привела к возрождению интереса к игре.