Недавно меня заинтересовала тема клеточных автоматов. В университете нам ничего такого не читают, поэтому решил немного разобраться в этих дебрях сам.
(Первое, что я увидел было Планерное ружьё Госпера в клеточном автомате «Жизнь»)
Собственно, что же это такое (не оружие же, которое стреляет клетками, хотя возможно когда-нибудь изобретут такого вида биологическое оружие....)
Посмотрим, что говорит нам всезнающая Википедия:
Кле́точный автома́т — дискретная модель, изучаемая в математике, теории вычислимости, физике, теоретической биологии и микромеханике.
Вообщем, это некоторое упрощение(модель), которое изменяется дискретно(прерывисто, то есть, например, если мы хотим перейти от 1 к 2, то мы не будем перебирать все известные нам дробные значения а сразу изменим величину на 2)
Сущностями такой модели являются "клетки". Они могут обладать различными характеристиками. Взаимодействие между клетками или ,возможно правильнее будет сказать, существование клетки подчиняется определенным правилам. Эти правила Вы устанавливаете сами. И в зависимости от этих самых правил Вы можете получать совершенно удивительные результаты.
И, как я понял, самое простое с чего бы я мог начать свой путь это реализация игры под названием "Жизнь". Она была придумана английским математиком Джоном Конвеем.
Правила этой игры очень простые:
- Место действия этой игры — «вселенная» — это размеченная на клетки поверхность или плоскость — безграничная, ограниченная, или замкнутая (в пределе — бесконечная плоскость).
- Каждая клетка на этой поверхности может находиться в двух состояниях: быть «живой» или быть «мёртвой» (пустой). Клетка имеет восемь соседей (окружающих клеток).
- Распределение живых клеток в начале игры называется первым поколением. Каждое следующее поколение рассчитывается на основе предыдущего по таким правилам:
- в пустой (мёртвой) клетке, рядом с которой ровно три живые клетки, зарождается жизнь;
- если у живой клетки есть две или три живые соседки, то эта клетка продолжает жить; в противном случае (если соседей меньше двух или больше трёх) клетка умирает («от одиночества» или «от перенаселённости»).
- Игра прекращается, если на поле не останется ни одной «живой» клетки, если при очередном шаге ни одна из клеток не меняет своего состояния (складывается стабильная конфигурация) или если конфигурация на очередном шаге в точности (без сдвигов и поворотов) повторит себя же на одном из более ранних шагов (складывается периодическая конфигурация).
При этом Вы никак не влияете на процесс, а только лишь задаете начальную конфигурацию(количество и положение "живых" и "мертвых" клеток).
Итак, вот что у меня получилось:
Особо я не думал над начальной конфигурацией и поэтому на основе четности сумм координат клетки в поле я решал "жить" ей или "умереть".
Кстати говоря, система приходит к устойчивому положению, если это можно так назвать, и почти перестает меняться. Получилась ранее упомянутая - Периодическая конфигурация.
"Рисовать" я буду на консоли. Извращение, но уж очень хотелось по скорее посмотреть на результат =)
Приношу свои извинения за надпись в видео..ничего лучше под рукой не оказалось.
Вот ссылка на проект на GitHub. Посмотрите на результат без помех.
Далее планирую доводить до ума: рисовать на чем то более подходящем и что-нибудь более красивое.разноцветное.
Кто же знает, куда-меня приведут эти клеточные автоматы.
Комментариев нет:
Отправить комментарий