Клеточный автомат

Условие

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

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

В задаче предлагается построить модель развития клеточных структур с тремя видами клеток. Модель состоит из правил и начальной конфигурации клеток на рабочем поле. Конфигурация строится на поле щелчками мыши, для изменения типа клетки нужно сделать повторный щелчок. Построение правил подробно описано в разделе "Помощь". 

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

Начать эксперименты можно с готовой модели. В этой модели рассматриваются только два вида клеток: первый вид можно условно называть клетками-строителями, второй - клетками скелета. Строители могут рождаться, перерождаться в скелетные клетки или умирать, клетки скелета не умирают. 

AnabaenaspiroidesПравила в примере неформально описываются следующим образом (формальное описание приведено в виде диаграмм в правой части экрана):

1) если около пустой клетки есть ровно два соседа, хотя бы один из которых - строитель, то в этой клетке появляется новый строитель;

2) если у непустой клетки 3 или 4 клетки-соседа любого вида, то, если среди соседей больше скелетных клеток, клетка-строитель превращается в скелетную клетку, иначе она не меняется;

3) в ином случае клетка-строитель умирает, а клетка скелета остается неизменной.

Главным критерием является длина периода (чем больше, тем лучше). Период - это число различных состояний (последовательных шагов функционирования клеточной структуры), которые в периодически повторяются (это хорошо соответствует реальности, ведь все процессы в живом организме периодические, и если процессы останавливаются, то организм умирает). 

В случае равенства периодов оценивается целостность организма - чем на меньшее число элементов он распадается в процессе жизнедеятельности, тем лучше. 

В случае равенства первых двух параметров оценивается величина организма - максимальное число клеток, из которых он состоит, в процессе жизнедеятельности (за период).

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

Помощь

Правила расположены в правой части экрана. Удаление правила осуществляется двойным щелчком на знак минус справа от него. Также можно изменить правило, щелкая на клетки, из которых состоит правило, - каждый щелчок будет приводить к изменению цвета клетки. Обратите внимание на значок "произвольного" цвета. Если он стоит в клетке, значит под ним может подразумеваться любой цвет, включая белый (особенность применения правил легче понять, проводя простые эксперименты с ними). 

Добавление правила осуществляется нажатием на кнопку "Добавить". Задание правила состоит в выборе цветов клеток нажатием мыши.

Правило состоит из шестиугольника, демонстрирующего клетку и её соседей. Клетка справа от шестиугольника показывает в какой цвет будет окрашена средняя клетка этого шестиугольника после применения правила. 

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

Применение правил происходит одновременно для всех клеток, на каждом шаге одно поколение клеток заменяется следующим.

Если есть несколько правил, которые подходят к данной ситуации (это может произойти из-за использования значка "произвольная клетка"), исполняется более конкретное правило

Если два правила противоречат друг другу, то они не выполняются, а выполняется более общее правило (которое, если найдётся, обязательно будет содержать значок произвольного символа)

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