Моделируем жизнь
В прошлый раз я писал о простой модели жизни. Кратко напомню правила. «Вселенная» состоит из клеток, в которых может быть жизнь. У каждой клетки есть 8 соседей. С каждым промежутком времени исполняются следующие правила:
1. Если у живой клетки меньше 2 соседей, она умирает от одиночества
2. Если у живой клетки 2 или 3 соседа, она продолжает жить
3. Если у клетки более 3 соседей, она умирает от перенаселения
4. Если у неживой клетки ровно 3 соседа, происходит размножение и клетка становится живой
Получившаяся модель поражает своей живостью и непредсказуемостью! Играть с ней — одно удовольствие
Но всё же, рано или поздно возникает ощущение, что это не очень напоминает реальную жизнь. Ведь настоящие организмы ведут себя не так! На поле постоянно остаются стабильные квадраты или палки, переворачивающиеся с боку на бок. Что такое эти квадраты, динозавры, превратившиеся в нефть? Геологи бы такое не одобрили
Возникает желание добавить в систему правил. Это я и сделал! Самой первой мыслью было добавить клеткам возраст. Например:
1. Если в неживой клетке возникает жизнь, её возраст становится равным 0
2. Если живая клетка остаётся живой на следующий ход, к её возрасту прибавляется 1
3. Если возраст клетки больше 8, она теряет репродуктивную функцию (не считается соседом неживых клеток), но тратит ресурсы (считается соседом живых клеток) и может вызвать смерть от перенаселения
4. Если возраст клетки превышает 10, она умирает
За такой системой наблюдать стало гораздо интереснее:
Добавление олдфагов, правда, не пошло на пользу Пикабу, но его жизнь стала куда более захватывающей! Квадраты из клеток одинакового возраста теперь не могут существовать: они стареют вместе и очень романтично погибают в один день. Палки также погибают из-за стареющего центрального элемента
Зато в такой системе возникают новые существа! Классический планер в ней также может существовать, но для жизни вот такой структуры нужны правила, включающие старение:
В классических правилах это существо симметрично и обречено на скучную судьбу. Здесь же за счёт старого краевого элемента, который скоро умрёт, симметрия нарушается. А затем существо воспроизводит себя, но уже немного в другом месте
Особенно мне нравится вот этот момент. Он как будто говорит «О да, я двигаюсь»
А вот ещё более крутая осциллирующая структура:
Она превращается в кучу мусора в обычных правилах, но здесь за счёт отмирания частей позади, движется туда-сюда бесконечно!
Кстати, если здесь есть знакомые с теорией автоматов люди, подскажите, описывал ли кто-нибудь такие правила?
Можно также ограничить репродуктивный возраст снизу, добавив «детство». Тогда живая клетка должна будет «подрасти», прежде чем сможет давать потомство. Но это очень агрессивные условия, которые быстро приводят к вымиранию. Классические движущиеся структуры становятся невозможны: они двигаются именно за счёт рождения новых клеток сбоку. А здесь оказывается, что новые клетки бесполезны, пока не подрастут
Единственное интересное, что мне удалось получить с такими правилами — это вот такой осциллирующий квадрат. Заметьте, насколько он стал круче по сравнению с обычным стабильным квадратом! Теперь это не просто кусок останков жизни, а действительно живая ячейка общества, цепляющаяся за жизнь изо всех сил
Вот так заставив клетки умирать, я сделал их более живыми. Вы можете поиграть с жизнью самостоятельно. По сравнению с прошлой версией я добавил ещё несколько фишек:
1. Увеличил размер Вселенной и добавил возможность выбрать длину стороны клетки в 2 пикселя. Выбирайте этот пункт на свой страх и риск, так как я не сильно беспокоился о производительности :)
2. Можно выбирать режим старения и настраивать его, как вам нравится. При самостоятельном рисовании клеток один клик добавит 1 к возрасту клетки, 2 клика — сотрут её
3. Можно добавить случайность. Тогда каждая клетка будет иметь шанс случайно поменять состояние на противоположное
Пишите в комментариях, что интересного у вас получилось :)
Моя группа ВК и телеграм-канал
Я ещё в 96м году на MSX II добавлял время жизни клетки, играясь с правилами. Про теорию автоматов, правда, я тогда вообще не в курсе был, ибо 8ой класс
Эмм, а вот правильно заметили про ресурсы и солнце. Я бы добавил, скажем так половую принадлежность клетки и некие условия для эмпатии, симпатии и антипатии.