К сожалению, для рождения новой клетки нужны 3 родителя.
Для «честного» моделирования жизни нужно, чтобы было 2 родителя, а каждый ген чтобы выбирался из родительских случайным образом с вероятность 1/2. При этом «проигравший» ген также должен запоминаться и на следующем этапе учитываться с вероятностями 1/4, 1/8 и тд.
Хотя, с 3 родителями можно поэкспериментировать со степенями 3
Да, модель можно долго усложнять, углубляясь в детали генетики, но я решил остановиться на такой детализации. Главное что принцип «правильное поведение ведёт к передаче генов потомку» сохранился.
Ниже в комментариях предлагают гексагональное поле. Я вот тоже о нём подумал: соседних ячеек становится шесть, а не восемь — возможно, в таких условиях рождение клетки от двух родителей будет иметь право на жизнь.
Мне в свое время, нравилось играть с начальным существом, то есть искать конфигурацию, которая проживет как можно дольше. Конечно, с постепенным увеличением количества начальных клеток. Очень увлекательно!
есть крутая прога для моделирования мультиагентных систем ccl.northwestern.edu/netlogo/, там есть куча предустановленных алгоритмов поведения (например модели сегрегации Шелла, модель распространения слухов, игра жизнь и т.д), и встроенный язык для программирования агентов
если вам интересно моделирование такого рода как в статье, то думаю вам будет интересна прога -)
«Креационизм» интересный, а на работающей модели, сделанной более года назад на JS, можно увидеть ещё 2 альтернативных и давно признанных правил «Жизни», поставив галочки напротив "DayNight" или "Sidorov's". Сначала было сделано для тестирования движка, а потом стало интересно, как ведут себя другие версии «Жизни», и были прикручены они.
Да, я видел вашу реализацию, когда искал, что на Хабре писали про «Жизнь» (было интересно, который я по счёту тут человек, реализовавший её на JS и Canvas :) ). Хорошая статья, и жалко, что часть картинок уже не отображается.
У меня в таблице «Жизнь случайно заполненного начального поля, 100 шагов» первые две не показывает. Остальные сейчас прогрузились. Может, Радикал подглючивает…
Хм, алгоритм DayNight генерирует очень реалистично выглядящую «карту» Каждое скопление выглядит как отдельный материк/остров и края почти идеально подходят. Интересно, кто-нибудь уже пробовал использовать игру жизнь с этим алгоритмом для генерации карты материков? :)
Меня в свое время поразил Муравей Лэнгтона. А именно то, как с помощью такого небольшого набора правил достигается такое сложное и непредсказуемое поведение.
У вас в коде нигде ошибки нет? Если пронаблюдать «классическую» жизнь, то можно заметить, как закрашенные точки возникают на пустом месте, где рядом нет никаких соседей.
Всякое может быть… Сейчас понаблюдал, не получилось отловить такого. Попозже ещё посмотрю. Точно место пустое, не край квадрата (там могли повлиять соседи с противоположного края)?
Получилось очень похоже на реальные опыты с бактериями. Одноклеточные не обмениваются геномами, а буквально клонируют себя. И в результате, если в популяции появляется мутант, более приспособленный к среде обитания, то он через несколько сотен поколений размножается в неимоверных количествах и вытесняет всех остальных.
Игра «Жизнь» и моделирование естественного отбора