Программируем жизнь

Представьте себе двумерную вселенную, состоящую из клеток (как в школьной тетради). Некоторые клетки закрашены — тогда мы говорим, что в них есть жизнь. У каждой клетки есть 8 клеток-соседей

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

Введём некоторые правила для нашей жизни:

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

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

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

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

Может ли в такой простой системе возникнуть что-то похожее на столь сложный процесс, как жизнь? Оказывается, может

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

Cистема поражает своей непредсказуемостью. Клетки постоянно рождаются и умирают, количество живых клеток то возрастает, то убывает. Иногда через какое-то количество шагов поле остаётся пустым, иногда на нём остаются стабильные структуры, а порой нечто «живое» остаётся в игре очень долго или навсегда

Примеры «существ»

Представьте, квадрат из 4 клеток на поле

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

У каждой клетки квадрата ровно 3 соседа. У клеток по краям — максимум по 2. Это значит, что каждая клетка квадрата будет продолжать жить, а рядом не будут рождаться новые. Такая структура будет существовать на поле вечно!


Но это совсем неинтересно, жизнь ведёт себя не так. У нас получилось что-то вроде окаменелости. Интереснее себя ведёт палка 1 на 3

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

У её центрального элемента 2 соседа, поэтому он остаётся живым. Элементы на краях погибают от одиночества, соседствуя лишь с центром. Зато с другой стороны от центра у мёртвых клеток имеется 3 соседа, поэтому они становятся живыми! Так это существо продолжает жить, переворачиваясь с боку на бок каждый ход

Существуют ещё более крутые конструкции, например, пульсар:

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

Но больше всего впечатляют движущиеся элементы! Они повторяют себя, но уже не на том же месте, а немного смещаясь. Например, планер:

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

Или даже космический корабль:

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

Если вас это ещё недостаточно впечатляет, то посмотрите на планерное ружьё Госпера:

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

Это стабильная структура, которая постоянно порождает новые двигающиеся планеры! И это уже действительно напоминает что-то живое. Построить ружьё Госпера можно так:

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

Зачем?

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

Эта модель называется Игра «Жизнь» Конвея. Её изобрёл британский математик Джон Конвей в 1970 году. До этого известнейший физик Джон фон Нейман предложил нечто похожее. Во времена космической гонки он думал, как колонизировать Марс. Поверхность красной планеты состоит из оксида железа — соединения кислорода и металла!

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

Фон Нейман предложил создать роботов, которые бы высадились на поверхность планеты и начали расщеплять материал у себя под ногами на кислород и железо. Кислород бы заполнил атмосферу для будущих колонизаторов, а из железа роботы бы делали свои собственные копии!

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

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

Конвей упростил модель фон Неймана до той, что описана в начале поста. Тем не менее, из таких простых правил всё равно рождаются очень сложные, непредсказуемые структуры. Почти никогда нельзя предсказать, вымрет ли система или стабилизируется и за сколько шагов это произойдёт. Эта простая модель очень помогла развитию таких наук, как математика и программирование, и даже биология с химией

Но что будет если всё же добавить сложности в эту модель? Может быть, сделать клеткам возраст, чтобы они умирали, если долго не изменяются, или сделать клетки шестиугольными, а не квадратными? Пишите свои идеи в комментариях, а я попробую их реализовать :)

Также можете поиграть с моделью самостоятельно. Можно заполнить поле случайным образом, изменить масштаб или нарисовать какую-либо фигуру самостоятельно. Пишите, что интересного у вас получилось!

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

Моя группа ВК

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

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

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

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

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


ДЛЯ АВТОРОВ:


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

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

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

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

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


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


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

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

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

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

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


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

29
Автор поста оценил этот комментарий

О, жизнь с шестиугольными клетками я делал. Там немножко более сложные правила и три состояния у клеток, а не два. Запустить можно тут: https://alexfsmirnov.github.io/hex-gol/

А подробнее почитать правила тут: https://www.gamedev.net/blogs/entry/2261919-is-there-a-hexag...

100
DELETED
Автор поста оценил этот комментарий
Самое интересное, что эта штука потенциально полна по Тьюрингу, и любители реально создают виртуальные компьютеры из нее. Вот тут, например, игра "жизнь" эмулирована на ней же
https://youtu.be/xP5-iIeKXE8
раскрыть ветку
34
DELETED
Автор поста оценил этот комментарий
"Так это существо продолжает жить, переворачиваясь с боку на бок каждый ход"
Иллюстрация к комментарию
раскрыть ветку
32
Автор поста оценил этот комментарий

у меня глайдер на руке

Иллюстрация к комментарию
раскрыть ветку
14
Автор поста оценил этот комментарий

Мое ружьё Госпера само себя застрелило =(

раскрыть ветку