Моделируем жизнь

В прошлый раз я писал о простой модели жизни. Кратко напомню правила. «Вселенная» состоит из клеток, в которых может быть жизнь. У каждой клетки есть 8 соседей. С каждым промежутком времени исполняются следующие правила:

1. Если у живой клетки меньше 2 соседей, она умирает от одиночества

2. Если у живой клетки 2 или 3 соседа, она продолжает жить

3. Если у клетки более 3 соседей, она умирает от перенаселения

4. Если у неживой клетки ровно 3 соседа, происходит размножение и клетка становится живой

Получившаяся модель поражает своей живостью и непредсказуемостью! Играть с ней — одно удовольствие

Моделируем жизнь Жизнь, Программирование, Компьютер, Conways game of Life, Игры, Человек наук, Наука, Гифка, Длиннопост

Но всё же, рано или поздно возникает ощущение, что это не очень напоминает реальную жизнь. Ведь настоящие организмы ведут себя не так! На поле постоянно остаются стабильные квадраты или палки, переворачивающиеся с боку на бок. Что такое эти квадраты, динозавры, превратившиеся в нефть? Геологи бы такое не одобрили

Моделируем жизнь Жизнь, Программирование, Компьютер, Conways game of Life, Игры, Человек наук, Наука, Гифка, Длиннопост

Возникает желание добавить в систему правил. Это я и сделал! Самой первой мыслью было добавить клеткам возраст. Например:

1. Если в неживой клетке возникает жизнь, её возраст становится равным 0

2. Если живая клетка остаётся живой на следующий ход, к её возрасту прибавляется 1

3. Если возраст клетки больше 8, она теряет репродуктивную функцию (не считается соседом неживых клеток), но тратит ресурсы (считается соседом живых клеток) и может вызвать смерть от перенаселения

4. Если возраст клетки превышает 10, она умирает

За такой системой наблюдать стало гораздо интереснее:

Моделируем жизнь Жизнь, Программирование, Компьютер, Conways game of Life, Игры, Человек наук, Наука, Гифка, Длиннопост

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

Моделируем жизнь Жизнь, Программирование, Компьютер, Conways game of Life, Игры, Человек наук, Наука, Гифка, Длиннопост

Зато в такой системе возникают новые существа! Классический планер в ней также может существовать, но для жизни вот такой структуры нужны правила, включающие старение:

Моделируем жизнь Жизнь, Программирование, Компьютер, Conways game of Life, Игры, Человек наук, Наука, Гифка, Длиннопост

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

Особенно мне нравится вот этот момент. Он как будто говорит «О да, я двигаюсь»

Моделируем жизнь Жизнь, Программирование, Компьютер, Conways game of Life, Игры, Человек наук, Наука, Гифка, Длиннопост

А вот ещё более крутая осциллирующая структура:

Моделируем жизнь Жизнь, Программирование, Компьютер, Conways game of Life, Игры, Человек наук, Наука, Гифка, Длиннопост

Она превращается в кучу мусора в обычных правилах, но здесь за счёт отмирания частей позади, движется туда-сюда бесконечно!

Кстати, если здесь есть знакомые с теорией автоматов люди, подскажите, описывал ли кто-нибудь такие правила?

Можно также ограничить репродуктивный возраст снизу, добавив «детство». Тогда живая клетка должна будет «подрасти», прежде чем сможет давать потомство. Но это очень агрессивные условия, которые быстро приводят к вымиранию. Классические движущиеся структуры становятся невозможны: они двигаются именно за счёт рождения новых клеток сбоку. А здесь оказывается, что новые клетки бесполезны, пока не подрастут

Моделируем жизнь Жизнь, Программирование, Компьютер, Conways game of Life, Игры, Человек наук, Наука, Гифка, Длиннопост

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

Моделируем жизнь Жизнь, Программирование, Компьютер, Conways game of Life, Игры, Человек наук, Наука, Гифка, Длиннопост

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

1. Увеличил размер Вселенной и добавил возможность выбрать длину стороны клетки в 2 пикселя. Выбирайте этот пункт на свой страх и риск, так как я не сильно беспокоился о производительности :)

2. Можно выбирать режим старения и настраивать его, как вам нравится. При самостоятельном рисовании клеток один клик добавит 1 к возрасту клетки, 2 клика — сотрут её

3. Можно добавить случайность. Тогда каждая клетка будет иметь шанс случайно поменять состояние на противоположное


Пишите в комментариях, что интересного у вас получилось :)

Моделируем жизнь Жизнь, Программирование, Компьютер, Conways game of Life, Игры, Человек наук, Наука, Гифка, Длиннопост

Моя группа ВК и телеграм-канал

Лига образования

4.4K постов21.8K подписчиков

Добавить пост

Правила сообщества

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


ДЛЯ АВТОРОВ:


Приветствуются:

-уважение к читателю и открытость

-желание учиться

Не рекомендуются:

-публикация недостоверной информации


ДЛЯ ЧИТАТЕЛЕЙ:


Приветствуются:

-конструктивные дискуссии на тему постов

Не рекомендуются:

-личные оскорбления и провокации

-неподкрепленные фактами утверждения


В этом сообществе мы все союзники - мы все хотим учиться! :)

12
Автор поста оценил этот комментарий
Понравился устойчивый квадрат. Почему-то вспомнилась однокомнатная хрущевка,передающеяся от поколения к поколению...
6
Автор поста оценил этот комментарий
Можно пойти дальше. Добавить состояния не только живым клеткам, но и пустым (не занятым). Тогда можно будет симулировать исчерпание и возобновление ресурсов. Тогда можно будет вместо правила перенаселения (количества соседей) использовать количество ресурсов на соседних клетках. Если ресурсы исчерпаны, то клетка погибает. Нужно будет подобрать правильную скорость потребления и скорость возобновления ресурсов.
раскрыть ветку
2
Автор поста оценил этот комментарий
Кстати, если здесь есть знакомые с теорией автоматов люди, подскажите, описывал ли кто-нибудь такие правила?

Я ещё в 96м году на MSX II добавлял время жизни клетки, играясь с правилами. Про теорию автоматов, правда, я тогда вообще не в курсе был, ибо 8ой класс

раскрыть ветку
2
Автор поста оценил этот комментарий
Классно, автор, мне было интересно))
1
Автор поста оценил этот комментарий

Эмм, а вот правильно заметили про ресурсы и солнце. Я бы добавил, скажем так половую принадлежность клетки и некие условия для эмпатии, симпатии и антипатии.