👾, Хабр!
Осторожно, присутствует несколько мерцающих анимаций. Они спрятаны под спойлеры, открывайте на своё усмотрение. На большом экране рекомендуется смотреть в хорошо освещённом помещении.
Неделю назад мы сделали шаг в сторону нетоталистичных конфигураций, где считали не только количество, но и расположение живых соседей. Сегодня шагнём в другую сторону от тоталистичных правил – увеличим радиус поиска соседей.
Самое популярное подобное расширение известно как Larger than Life, или просто LtL. Данная конфигурация была описана в докторской диссертации профессора Калифорнийского университета – Келли Мишель Эванс (Kellie Michele Evans) в 1996г., и нередко название конфигурации дополняется именем автора.
Нотация
В общем виде расширение предполагает указание следующих параметров:
Диапазон количества соседей для выживания клетки;
Диапазон количества соседей для рождения клетки;
Радиус поиска соседей;
Количество поколений (в данной конфигурации чаще называемых «состояниями»);
Тип окрестности (чаще всего это окрестность Мура
или фон Неймана
);
Учёт центральной клетки в счётчике соседей.
Последнее, небольшое, но значимое дополнение, является новым в нашей серии, и в рассматриваемых ранее конфигурациях этот пункт всегда принимался как M0, то есть состояние само́й клетки не включалось в общий счётчик.
В классическом виде нотация выглядит следующим образом:
Rr,Cc,Mm,Ssmin..smax,Bbmin..bmax,Nn
В будущих статьях мы коснёмся конфигурации, где допускается множество диапазонов для рождения и выживания клетки, однако в рассматриваемой сегодня указывается только по одному диапазону для каждого параметра.
Параметры окрестности и учёта центральной клетки могут быть опущены в записи правила. В этом случае, в качестве стандартных значений для них принимаются NM – окрестность Мура, и M0 – без учёта центральной клетки. Поколения, как и ранее, тоже можно опустить, подразумевая G2.
Нотация предлагает использовать C для обозначения поколений (Count of states) и запятые в качестве разделителей. Это не совсем согласовано с прочими нотациями, потому мы будем использовать привычные G и /.
В качестве разделителя в диапазонах, в разных вариантах нотации может использоваться двое- и троеточие, дефис и t (to).
0. Жизнь
Для гарантии, что наша симуляция работает правильно, давайте реализуем классическую «жизнь» Конвея в рамках LtL.
![R1/G2/M0/B3-3/S2-3/NM R1/G2/M0/B3-3/S2-3/NM](https://webcf.waybackmachine.org/web/20230317155637im_/https://habrastorage.org/getpro/habr/upload_files/ec5/7d5/3fc/ec57d53fc4b8cf97854fd5052c9bdfab.webp)
Отлично, кажется, всё работает как и должно.
А что, если мы немного изменим правило? К примеру, будем учитывать центральную клетку?
![10 запусков. R1/G2/M1/B3-3/S2-3/NM 10 запусков. R1/G2/M1/B3-3/S2-3/NM](https://webcf.waybackmachine.org/web/20230317155637im_/https://habrastorage.org/getpro/habr/upload_files/4cf/439/9df/4cf4399dfe9980120b4f71f863edaa8e.webp)
Совершенно другая картина. Состояние за первый десяток итераций приходит к виду с простейшими натюрмортами и осцилляторами.
Можно подумать, что если мы уменьшим S, то вернём правило к известному виду. Но это не так:
![5 запусков. R1/G2/M1/B3-3/S1-2/NM 5 запусков. R1/G2/M1/B3-3/S1-2/NM](https://webcf.waybackmachine.org/web/20230317155637im_/https://habrastorage.org/getpro/habr/upload_files/8ec/2a3/eb7/8ec2a3eb7a6fa89c077fec2aa72df756.webp)
Поэтому данный параметр вынесен отдельно, а в англоязычной традиции «life-like» конфигурацию называют outer-totalistic, то есть "учитывающую только внешние клетки".
1. Bugs
В именованных правилах LtL конфигурации очень много «жуков».
Первое подобное правило было описано самой Келли Эванс, и известно также как «Bosco's rule», по названию, которое было дано часто осциллятору с большим периодом (от 166 итераций), вариации которого и порождают «жуков».
Копошиться сегодня будем, в основном, на нецикличной сетке 300×300.
Bosco's rule – R5/G2/B34-45/S33-57
![](https://webcf.waybackmachine.org/web/20230317155637im_/https://habrastorage.org/getpro/habr/upload_files/238/d53/47e/238d5347e8f917933f06368f68fb6be5.webp)
Bugs 3R – R3/B14-18/S14-23
![](https://webcf.waybackmachine.org/web/20230317155637im_/https://habrastorage.org/getpro/habr/upload_files/8b0/7a1/5ef/8b07a15eff59c298bf3d42f71af5695c.webp)
Bugs R7 – R7/B63-84/S63-108
![2 старта 2 старта](https://webcf.waybackmachine.org/web/20230317155637im_/https://habrastorage.org/getpro/habr/upload_files/949/a95/a76/949a95a768c7eef2777c27de3cb31a6a.webp)
Bugsmovie – R10/B123-170/S122-211
![3 старта 3 старта](https://webcf.waybackmachine.org/web/20230317155637im_/https://habrastorage.org/getpro/habr/upload_files/4d9/9bf/f26/4d99bff26857d1da2bdab0f297e9220a.webp)
Miniature Bugs – R3/B14-25/S15-22
![3 старта 3 старта](https://webcf.waybackmachine.org/web/20230317155637im_/https://habrastorage.org/getpro/habr/upload_files/ada/92b/950/ada92b9508b1f2cf4ad74372483a38b1.webp)
... и ещё бесчисленное множество подобных им. Можно сказать, что жуки являются естественными обитателями LtL конфигурации.
2. Globe
На разрастающихся правилах большой радиус может давать интересные окаймовки, как зубцы у этого правила.
R8/G2/B74-252/S163-223
![](https://webcf.waybackmachine.org/web/20230317155637im_/https://habrastorage.org/getpro/habr/upload_files/e07/cae/af9/e07caeaf9bab4f48872bcf97ddd07c51.webp)
3. Liquid methuseblob soup
Перетекающие правила всегда смотрятся интересно, а данное же ещё дополняется определённой внутренней структурой. Также занимательно, что направление роста можно определить даже по отдельному фрейму по толщине берега.
R6/M1/B52-60/S58-90
![](https://webcf.waybackmachine.org/web/20230317155637im_/https://habrastorage.org/getpro/habr/upload_files/e83/744/c6f/e83744c6fbe50bbc88a1ca5b4832bfc9.webp)
4. R7/B72-99/S72-225
Орнаменты с финальным видом на LtL конфигурации редко находятся, разве что на неумирающих правилах.
![](https://webcf.waybackmachine.org/web/20230317155637im_/https://habrastorage.org/getpro/habr/upload_files/d5a/a5d/c8b/d5aa5dc8b1105adaa0b866792eda4814.webp)
Конечно, определённой симметрии можно добиться и с заготовленными стартами на других правилах:
R10/M1/B3-3/S2-3
![](https://webcf.waybackmachine.org/web/20230317155637im_/https://habrastorage.org/getpro/habr/upload_files/94c/1ee/b60/94c1eeb60010a0cbb6a7b03972eca25b.webp)
5. Modern Art
Демонстрацию данного правила пришлось хорошо порезать. G255 по размеру никак не укладывались, оставил по 1 фрейму "роста" из 20.
R10/G255/B3/S1-2
![](https://webcf.waybackmachine.org/web/20230317155637im_/https://habrastorage.org/getpro/habr/upload_files/1ca/0d0/151/1ca0d01518e01f2fdc4e9858e16ec1d1.webp)
Можем позволить себе изменить количество поколений. Результат, конечно, несколько изменится.
G10. Без обрезок.
![](https://webcf.waybackmachine.org/web/20230317155637im_/https://habrastorage.org/getpro/habr/upload_files/3cc/13b/0f3/3cc13b0f3b4e21c83fb97c2265730a0c.webp)
6. R2/B7-24/S19-25
Одно из самых медленно растущих и необычных правил. Рост происходит одновременно двумя шаблонами – чередующимися "зеброй" линиями и "колючей проволокой", которая, искривляясь, проходит через линии, но почти не нарушает их, а накладываясь на прямые становится основным видимым шаблоном.
R2/B7-24/S19-25
![](https://webcf.waybackmachine.org/web/20230317155637im_/https://habrastorage.org/getpro/habr/upload_files/d40/159/0cc/d401590cca1939e0375f4faf2d301e32.webp)
Как и с прошлым правилом – полный вид не влезает по размеру. В конце он выглядит так:
![До краёв данный сид не дорос, это его финальное состояние До краёв данный сид не дорос, это его финальное состояние](https://webcf.waybackmachine.org/web/20230317155637/https://habrastorage.org/getpro/habr/upload_files/1c4/f53/ff5/1c4f53ff518f1ccb402938b7666d1cfe.jpeg)
7. R2/G5/B4-4/S3-3
Немного неожиданно, но простые и стабильные космические корабли – редкость для данной конфигурации, даже в единичных экземплярах. Слишком много возмущений вносит расширенный радиус. Потому привычные корабли можно увидеть только на самых строгих вариантах:
![](https://webcf.waybackmachine.org/web/20230317155637im_/https://habrastorage.org/getpro/habr/upload_files/08b/c57/7fd/08bc577fdcdfafe76da95ea96caab983.webp)
8. Pigs & R2/B4-4/S1-1
Примерно так же обстоит дело и с привычными, по прошлым конфигурациям, стабильными репликаторами и осцилляторями. Правила с ними выделяются на общем фоне.
![Pigs – R2/B4-4/S10-19 – 3 старта Pigs – R2/B4-4/S10-19 – 3 старта](https://webcf.waybackmachine.org/web/20230317155637im_/https://habrastorage.org/getpro/habr/upload_files/554/1fa/c14/5541fac140798acd267d9c0e8ddc1ddd.webp)
![R2/B4-4/S1-1 R2/B4-4/S1-1](https://webcf.waybackmachine.org/web/20230317155637im_/https://habrastorage.org/getpro/habr/upload_files/e16/74e/8c5/e1674e8c5ce4ba8cf4fb90d33cc31982.webp)
9. Возмущения
Но они же и порождают правила, вроде таких:
![R7/G9/B14-15/S43-49 R7/G9/B14-15/S43-49](https://webcf.waybackmachine.org/web/20230317155637im_/https://habrastorage.org/getpro/habr/upload_files/90c/aaa/069/90caaa069533e160bf39a94df8d1dc05.webp)
![R4/G11/B6-6/S7-8 R4/G11/B6-6/S7-8](https://webcf.waybackmachine.org/web/20230317155637im_/https://habrastorage.org/getpro/habr/upload_files/6da/615/b2a/6da615b2a1cdebbe6dc53c2f3e78f2df.webp)
10. R7/G5/B63-82/S64-109
Напоследок взглянем, как выглядит одно из бесчисленных правил с «жуками» в поколенческом виде:
![Не самое частое поведение. Большинство стартов заканчиваются пустым полем на первой сотне итераций Не самое частое поведение. Большинство стартов заканчиваются пустым полем на первой сотне итераций](https://webcf.waybackmachine.org/web/20230317155637im_/https://habrastorage.org/getpro/habr/upload_files/1c4/3b2/189/1c43b21892a8c496d1db782cccfe053d.webp)
Бонус. Extra range
R45/G2/B2500-4973/S2884-4922
![500×500; заполнение на 60% 500×500; заполнение на 60%](https://webcf.waybackmachine.org/web/20230317155637im_/https://habrastorage.org/getpro/habr/upload_files/238/bbf/16a/238bbf16acd52b40826b51f6e7e0938c.webp)
![Заполнение на 80% Заполнение на 80%](https://webcf.waybackmachine.org/web/20230317155637im_/https://habrastorage.org/getpro/habr/upload_files/6e2/d3b/e33/6e2d3be33fcd852ad1ad102a8ab17ec3.webp)
![Стабильный финальный вид (попался на 75%) Стабильный финальный вид (попался на 75%)](https://webcf.waybackmachine.org/web/20230317155637im_/https://habrastorage.org/getpro/habr/upload_files/0b9/99e/d30/0b999ed30310e4bce27d693d4d3625fd.webp)