скачать все ... | на главную ... |
c/2 - паровозы в правилах "M:b3/s023"
Комментарии к коллекции
Оглавление.
1. Немного о самой жизни.
2. B-гептамино и следствия из него.
3. Паровоз номер один.
4. Расщепление следа.
5. Как собрать грабли.
6. На пути к размножителям.
точка, сломаный блок и еще какая-то загогулина |
1. Немного о самой жизни.
Правила "М:b3/s023" являются небольшой, но существенной, модификацией игры "Жизнь" ("M:b3/s23"). Отличие заключается в том, что если у живой клетки нет вообще живых соседей, то она выживает. Несложно видеть, что, например, все натюрморты из "Жизни" работают и здесь: выживание стало только легче, а случаев рождения не прибавилось. С другой стороны, появились "одноклеточные" организмы, то есть изолированная клетка (далее я буду называть ее "точкой") стала самым естественным натюрмортом. Появились и другие новые натюрморты, образующиеся при стабилизации точками индукционных петель, то есть таких конфигураций, в которых в первом поколении ни одна клетка не умирает (см. рисунок справа. да нет, не баннер!). Таким же образом можно, разумеется, стабилизировать не только натюрморты, но и статоры осцилляторов.
вокруг точки. |
Глайдер, знаменитый символ величия игры "Жизнь", вполне пригоден и для наших новых правил. Так же можно перенести в наш мир несколько других хорошо известных объектов из игры "Жизнь": пульсар, пентадекатлон, тумблер - все они вполне работоспособны и здесь. А вот три других стандартных корабля - ЛКК, СКК и ТКК - в нашей жизни не работают. Но, как мы увидим ниже, им находится достойный заменитель. Еще можно отметить интересную реакцию глайдера с точкой (на рисунке слева).
С введением правила "s0" характер хаотического развития случайных конфигураций резко изменился. Поскольку клетка оказывается в одиночестве достаточно часто, ее выживание в таких ситуациях приводит к тому, что большинство достаточно больших и случайных конфигураций начинают расти неограниченно, медленно расширяясь по всем направлениям (ну медленно - это как сказать, наверное, рост все-таки квадратичный, а быстрее, как известно, не бывает, поэтому, говоря о скорости, я имею в виду соответствующие константы в сравнении с другими расширяющимися правилами, такими, как, скажем, "Seeds" (M:b2/s). Ну вы поняли.)
Никогда не жалко нарисовать еще раз. |
2. B-гептамино и следствия из него.
Существенным фактором в таком катастрофическом расширении случайных паттернов является наличие замечательной конфигурации - B-гептамино, хорошо известного по игре "Жизнь". В игре "Жизнь" B-гептамино является "нестабильным" паровозом, то есть едет некоторое время вперед, а потом погибает из-за собственного выхлопа. Здесь наблюдается аналогичное явление, но едет оно в несколько раз дальше, а след взрывается, порождая, вообще говоря, еще несколько B-гептаминошных "протуберанцев".
на основе B-гептамино. |
Есть также замечательный естественный корабль, получающийся из B-гептамино добавлением небольшого хвоста. Этот корабль движется со скоростью c/2 и имеет сравнительно большой период - p20. Удивительной особенностью этого корабля является наличие двух огромных искр - сбоку и сзади, причем последняя отделяется от тела корабля на целых 4 клетки! Хорошо бы этот корабль как-нибудь обозвать, а то неудобно как-то - такая штука а без названия.
Еще в архиве есть также занятный файл "Single-B.lif", в котором изображен еще один естественный псевдопоезд из B-гептамино. Там выхлоп несколько модифицирован, и почему-то ведущее B-гептамино не умирает, сколько бы я его не наблюдал. Оно едет со скоростью c/2, точнее, 154c/308, переварачиваясь каждые 154 поколения. Тем не менее, доказать, что это действительно поезд, проблематично, поскольку след его нестабилен.
В связи с этими наводящими соображениями возникает желание найти действительно бесконечно растущий объект. Это скорее всего должен быть поезд, так как для ружей предпосылок пока что не видно. Строить его мы, разумеется, будем из B-гептамино. След его должен быть, в отличие от Single-B, стабильным, то есть состоять из натюрмортов и/или осцилляторов и, по возможности, разлетающихся в разные стороны глайдеров.
3. Паровоз номер один.
Первое, что пришло мне в голову - попытаться стабилизировать B-гептамино другим B-гептамино, то есть, проще говоря, поставить два B-гептамино симметрично так, чтобы они поддерживали друг друга. Это можно делать по-разному: во-первых, ставить B-гептамино на разном расстоянии, и, во-вторых, разными концами внутрь. Попытка поставить их "острыми" (на рисунке сверху острый конец - справа) концами наружу привела к нескольким поездам при расстояниях между внутренними краями 8, 9, 13, 14, 15, 18, 20, 21 и 22. К сожелению, все они оказались нестабильными, хотя, например, при ширине 8 взрыв развивается весьма медленно. А вот расположение двух B-гептамино острыми концами внутрь на расстоянии 4 зразу дало первый в истории M:b3/s023 устойчивый паровоз (период 40, на рисунке слева). Возможно также расположение B-гептамино на расстоянии 6, 7 и 8, но эти образцы тоже нестабильны.
Появление первого паровоза сразу положило начало всевозможным экспериментам на тему "какие следы можно получить?" Изначальный след из пар мигалок, ульев и сломаных блоков можно трансформировать, пуская по бокам поезда p20-корабли (здесь мы используем их боковую искру - не такую сильную, но зато удобно расположенную). Несколько подобных трансформаций можно разобрать на примере, скажем, файла bouncer.lif из коллекции. Там поезд оставляет след из точек, а два глайдера в нем "запутываются", отражаясь от точек туда-сюда. Все это образует растущий космический корабль. Все корабли расположены в одной фазе - как раз перед смертью хвостовой искры; это скорее для удобства, хотя без этого можно сделать компактнее.
4. Расщепление следа.
... первые два корабля нужны для того, чтобы убрать сломаные блоки и ульи. Это делается достаточно легко, и позволяет работать сразу с "чистым" следом - из одних мигалок. Следующий корабль превращает мигалки в блоки. С мигалками работать не очень удобно - из них не так много что можно сделать. Еще (попробуйте сами ;) можно превратить аналогичным образом мигалки в караваи, караваи - в ульи (на этом этапе придется послать корабли внутри следа), а ульи уже можно просто убрать; таким образом первый в истории паровоз превратится в первый в истории искусственный космический корабль. Но вернемся к "bouncer.lif".
Итак, вместо мигалок у нас получились блоки. Один корабль не может в одиночку разрушить блок, но дело спасает удивительная реакция, при которой корабль отодвигает блок наружу. Эта реакция очень часто у меня используется; её можно повторять, чтобы отодвинуть блок еще дальше. Потом блоки расщепляются парой симметрично расположенных кораблей на пары точек, и ненужные точки легко удаляются.
по блокам |
Есть и другой способ расщепления блоков, лежащий в файле "climbers.lif". В этом файле есть несколько примеров того, как B-гептамино "едет" по p20-следу из различных натюрмортов, одновременно трансформируя их. В частности, таким образом можно блок расщепить на сломаный блок и еще две точки, которые потом легко зачищаются кораблями (так я в свое время получил второй космический корабль - идея расщепления блока двумя кораблями появилась позднее). Подобные реакции (а в этом файле только несколько примеров) образуются естественным образом во время неудачных попыток сделать то же самое кораблями.
Так, ну тут вроде бы всё ясно. Располагая на разном расстоянии два локомотива и меняя количество глайдеров, можно добиться различных следов, в том числе сколь угодно большого периода. Но с этими следами нельзя будет работать, поскольку они слишком медленно образуются (скорость глайдеров в два раза меньше скорости локомотива).
5. Как собрать грабли.
Можно попытаться попытаться построить паровоз из большего количества B-гептаминошных двигателей, комбинируя несколько обычных поездов. Например, локомотив огромного обстреливающего поезда из файла "rakes\g40.lif" состоит из двух обычных поездов, изнутри расшатываемых двумя кораблями и потом стабилизирующих друг друга. Это исторически первый пример поезда, стреляющего глайдерами (в русском переводе слово "rake", обозначающее такие поезда, означает буквально "грабли". Ну грабли так грабли ...). Глайдеры испускет B-гептомино, которое карабкается по необычному следу из караваев и точек. Из двух таких поездов можно собрать грабли, стреляющие глайдерами назад. Правда, тяжеловат он будет ...
Гораздо более компактный вариант граблей показан на рисунке слева (его тоже можно найти в файле "g40.lif", но уже в "очищенном" виде). Он образуется всего одним B-гептамино и одним кораблем поддержки, летящем в той же фазе, что позволяет причислить его к "элементарным" поездам. В файле "g40.lif" также показано, как сделать грабли, стреляющие глайдерами назад, причем двумя способами: "широким" и "длинным" (или, если хотите, "коротким" и "узким";).Наличие граблей открывает новые возможности по подметанию следов: глайдерами можно залезть в такие труднодоступные места, куда корабли не доберутся. Также глайдерами можно стабилизировать нестабильные поезда. И, наконец, их можно использовать для глайдерного синтеза (то есть сборки из глайдеров) нужных объектов.
В файле "puffers\B-puffers.lif" есть и другие крупные поезда, получающиеся, в-основном, комбинациями старых или при стабилизации предыдущих "нестабильных" поездов, хотя есть и оригинальные. В-частности, есть гигантский пентадекатлоновый поезд, "чистая" версия которого выложена отдельно в "puffers\PDpuf.lif". Там же - хороший пример того, как можно граблями пролезть в дырки между пентадекатлонами.
6. На пути к размножителям.
После получения глайдерных граблей (вы уже привыкли к терминологии?;) естественно возникают две новые задачи: получить грабли большего периода и получить грабли, стреляющие кораблями. К тому моменту, когда я это пишу, есть глайдерные грабли двойного и тройного периода (то есть периодов 80 и 120), а так же грабли, стреляющие кораблями вбок с периодом 40 (несложно модифицировать для 80 и 120) и назад с периодом 80. Скомбинировав p120 с p80, получаем p240. Всё это лежит сейчас в папке "rakes".
из трех глайдеров |
Грабли больших периодов возникают в значительной мере случайно, а именно из паровозов соответствующего периода. То есть удается каким-то образом получить паровоз нужного периода, а потом уже, зачищая его след и бомбардируя его граблями меньшего периода, получить "чистые" грабли. Самые маленькие p80-грабли, а так же единственные на сегодняшний день p120, мне удалось получить при помощи глайдерного синтеза такого следа, который при дестабилизации превращается в след большого периода. Например, большую роль сыграл след из "шляп", используемый в p120 и одном из p80. Синтез шляпы заимствован из игры "жизнь", а именно из этой знаменитой библиотеки.
"Шляпный" след используется и в строительстве граблей, стреляющих кораблями. Хотя в первых версиях (они для истории лежат там же рядышком) использовалась другая конструкция, при возбуждении выпускавшая сразу два корабля в обе стороны. В идеале, конечно же, хотелось бы найти чистый синтез корабля, то есть не оставляющий после себя развалин, но пока его не видно, а два "грязных" синтеза лежат в файле "synth.lif". Поэтому при аналогичной реализации граблей, стреляющих кораблями назад, возникли немалые проблемы: во-первых, след должен быть периода 40 (то есть паровоз - периода 80), и, во-вторых, корабль разбивается об развалины, оставшиеся от предыдущего корабля. Это потребовало двух дополнительных p80-граблей, которые расчищают след прямо перед носом у новоиспеченного корабля. Конструкция получилась тяжеловата, но всё равно не плохо для начала.
Простое устройство двух "элементарных" паровозов наталкивает на мысль о возможности их синтеза из глайдеров. Действительно, для синтеза B-гептамино достаточно всего двух глайдеров, а корабли мы уже производить умеем (тоже см. файл "synth.lif"). Таким образом, можно сконструировать два "размножителя", производящие по поезду соответствующего типа каждые 80 поколений, и, следовательно, демонстрирующие квадратичную скорость роста. Соответствующие файлы - "puffers\breeder1.lif" и "puffers\breeder2.lif". Примечание: 24.01.07 появилась более компактная версия p40-граблей, и соответствующие размножители удалось немного уменьшить.