Tutorials/Finding oscillators

From LifeWiki
Jump to navigation Jump to search

Observe the evolution sequence of this pattern.

x=5, y = 4, rule = B3/S23 3o$3bo$obobo$bo! [[ THEME 6 GRID THUMBNAIL THUMBSIZE 2 X -2 Y -1 GPS 10 AUTOSTART T 0 PAUSE 3 LOOP 40 ]]

At generation 9, we have a block and a loaf. At generation 14, we have a block and an object that is almost a loaf parent.

x=5, y = 4, rule = B3/S23 3o$3bo$obobo$bo! [[ THEME 6 GRID THUMBNAIL THUMBSIZE 2 X -2 Y -1 GPS 10 AUTOSTART T 9 PAUSE 1.5 T 13 PAUSE 0.3 T 14 PAUSE 1.2 LOOP 15 ]]

If we figure out how to fix the loaf predecessor, then we will have a period-twelve oscillator.

x=11, y = 3, rule = B3/S23 2o2b3o$2o2bobo2b2o$4b2o3b2o! [[ THEME 6 GRID THUMBNAIL THUMBSIZE 2 GPS 6 AUTOSTART T 0 PAUSE 0.8 T 6 PAUSE 0.8 PASTEMODE COPY PASTET 7 PASTE bobob$b3o$2b! 3 1 T 7 PAUSE 0.8 T 13 PAUSE 0.8 LOOP 14 ]]

The problem with the loaf predecessor is that it has one extra cell, highlighted red.

x=11, y = 4, rule = LifeHistory 6.D$2A2.3A$2A2.A.A2.2A$4.2A3.2A! [[ THEME 6 GRID THUMBNAIL THUMBSIZE 2 VIEWONLY ]]

If we prevent that cell from being born, we will have a functional oscillator.

The red cell was born because it had three neighbors in the previous generation, so if we get rid of one of those cells, it will not be born to due having only two neighbors, so our loaf parent will work.

x=11, y = 5, rule = LifeHistory 7.E$5.CD$2A3.C$2A2.A.A2.2A$4.2A3.2A! [[ THEME 6 GRID THUMBNAIL THUMBSIZE 2 VIEWONLY ]]

We can’t get rid of either of the light green cells because they are part of the loaf predecessor, but getting rid of the yellow cell would fix the loaf predecessor.

The red cell was born because it had three neighbors in the previous generation, so if we get rid of one of those cells, it will not be born to due having only two neighbors, so our loaf parent will work.

x=11, y = 5, rule = LifeHistory 7.E$5.CD$2A3.C$2A2.A.A2.2A$4.2A3.2A! [[ THEME 6 GRID THUMBNAIL THUMBSIZE 2 VIEWONLY ]]

We can’t get rid of either of the light green cells because they are part of the loaf predecessor, but getting rid of the yellow cell would fix the loaf predecessor. To do that, we need to look one generation earlier.

x=11, y = 7, rule = LifeHistory 6.2FC$7.E$6.3A$2A3.5A$2A2.A3.A.A$4.A4.2A$5.A! [[ THEME 6 GRID THUMBNAIL THUMBSIZE 2 VIEWONLY ]]

If we do nothing, the yellow cell will be born in the next generation because it has three neighbors, so we can prevent its birth by changing this. The row above the yellow cell is the best region to modify for this purpose because the it is the easiest to modify by something that would not have interacted with the block-and-almost-loaf predecessor previously, so we can add one or more cells there so that the yellow cell will not be born due to overpopulation. Adding a cell in either of the gray positions would cause the cell just to the left of the yellow cell to be born instead, which would also mess up the loaf predecessor, but adding a cell in the light green position would work perfectly fine. In order to do this, we need a sparker.

Because our reaction would yield a period-twelve oscillator if fixed, this sparker must have a period dividing twelve (either twelve or a proper factor). For this reason, certain sparkers, such as Kok's galaxy, would not work due to only providing the correct spark some of the times when it is needed.

x=21, y = 29, rule = B3/S23 13bobo2bo$13b3obob2o$12bo6bo$13bo5b2o2$12b2o5bo$13bo6bo$12b2obob3o$14b o2bobo5$5b2o3b2o$5b2o2bobo2b2o$10bo3b2o$10bo4$2ob6o$2ob6o$2o$2o5b2o$2o 5b2o$2o5b2o$7b2o$6ob2o$6ob2o! [[ THEME 6 GRID THUMBNAIL THUMBSIZE 2 WIDTH 500 HEIGHT 650 GPS 6 ]]

Fortunately for us, period-six dot sparkers exist, e.g., unix.

x=21, y = 25, rule = B3/S23 17b2o$17bo2bo3$17bob2o$12b2o2bobo$12bo4bo$16bo$13bo2bo3$5b2o$5b2o5b3o $15bo$12bobobo$13bo$4bo2bo$4bo$3bo4bo$2bobo2b2o$2obo3$o2bo$2b2o! [[ THEME 6 GRID THUMBNAIL THUMBSIZE 2 WIDTH 500 HEIGHT 650 GPS 6 ]]

And this is how I independently discovered baker's dozen. (The linked wiki page shows additional stabilizations.) There are other ways of finding oscillators, but some of them also involve sparkers. For example, David Raucci has made a script that searches for ways to spark common active regions that result in the active region being formed again, resulting in oscillators such as this period-eighteen lumps of muck hassler.

x=28, y = 37, rule = B3/S23 10b2o$10bobob2o$12bobo$11b2obo$4b2ob2obobob2o$5bobo3b2o3bo$5bobobo3b3o $6b7o$12bob2o$4b6o3b2obo6b2o$3bo7b2o3bo7bo$4b3o6b3o6bo$6bo6bo6b4o$7b6o 6bo4bo$18bob5o$18bobo4b2o$17b2o5bo2bo$7bob3o5bo2bobobob2o$5b2o3bobo4b 3obo2bo$5b2o2bo2b2o3bo3bob2o$5b2obo8b2obobo$10bob2o4bobobo$7b2o9bo2bo $10b2o7b2o2$4b3o$3bobobo$b3o3b3o$o4bo4bo$ob2o2bob2obo$bo2b4obobo$2b2o 4b2ob2o$4bo2bobobo2bo$4b4ob2o2b2o$8bo$6bobo$6b2o! [[ THEME 6 GRID THUMBNAIL THUMBSIZE 2 GPS 18 ]]

However, the original example of blocks and sparkers hassling a still-life is not as uncommon as one might guess. For example, consider this reaction from jslife/osc-supported/s0018.lif:

x=48, y = 39, rule = B3/S23 4bo$2bobo$3b2o2$8bo$9bo35bobo$7b3o35b2o$46bo2$13bo28bo$11bobo26b2o$12b 2o27b2o2$17bo$18bo17bobo$16b3o6b2o9b2o$25b2o10bo2$33bo$24bo6b2o$23bob o6b2o$23bobo$14b2o8bo5bo$13bobo13b2o$15bo7b2o4bobo$23b2o2$9b3o22b2o$11b o21b2o$10bo24bo2$5b2o32bo$4bobo31b2o$6bo31bobo3$3o40b2o$2bo39b2o$bo42b o! [[ THEME 6 GRID THUMBNAIL THUMBSIZE 2 GPS 18 ]]

We want to find a way to hassle the beehive without infinitely many gliders. One option is to use a sparker whose spark can replace the block. In order to figure out which types of sparks work in replacing the grin/block. Testing different options yields some that work (on the top row) and some that don't (on the bottom row).

x=149, y = 31, rule = B3/S23 2b2o18b2o18b2o18b2o18b2o18b2o18b2o18b2o$2b2o18b2o18b2o18b2o18b2o18b2o 18b2o18b2o3$bo19bo19bo19bo19bo19bo19bo19bo$obo17bobo17bobo17bobo17bob o17bobo17bobo17bobo$2b2o2bo15b2o2bo15b2o18b2o18b2o18b2o3bo14b2o2b2o14b 2o4bo$2b2obo16b2obobo14b2obo16b2ob3o14b2ob3o14b2ob2o15b2obo16b2ob2obo $b3obo15b3obo15b3ob2o14b3ob2o14b3ob2o14b3ob3o13b3ob3o13b3obo$obo3bo13b obo3bo13bobo4bo12bobo17bobo4bo12bobo17bobo17bobo$2o18b2o18b2o18b2o18b 2o18b2o18b2o18b2o10$2b2o18b2o18b2o18b2o18b2o18b2o18b2o18b2o$2b2o18b2o 18b2o18b2o18b2o18b2o18b2o18b2o3$bo19bo19bo19bo19bo19bo19bo19bo$obo17b obo17bobo17bobo17bobo17bobo17bobo17bobo$2b2o18b2o18b2o2bo15b2o18b2o18b 2o4bo13b2o2bo15b2o$2b2obo16b2obo16b2obo16b2ob2o15b2obo16b2ob3o14b2ob2o 15b2ob3o$b3obo15b3obo15b3obo15b3ob3o13b3ob3o13b3obo15b3obo15b3obo$obo 17bobo3bo13bobo17bobo17bobo5bo11bobo17bobo3bo13bobo3b2o$2o18b2o18b2o18b 2o18b2o18b2o18b2o18b2o! [[ THEME 6 GRID THUMBNAIL THUMBSIZE 2 GPS 9 T 6 PAUSE 6 ]]

Comparing the two suggests that if we have a two-cell leading edge, we need both cells to survive to the next generation, and of the two cells diagonally above and to the right of that two-cell leading edge, exactly one should be alive in the next generation. (This isn't exactly correct, e.g., 2bo$2b2o$2bo$2o$2o works, but this type of exception is unlikely to occur from a sparker.) We need a sparker that delivers the correct type of spark at a period dividing eighteen, and the aforementioned sparker turns out to work. It fact, it works with two relative timings, both of which are shown below.

x=58, y = 39, rule = B3/S23 20b2o$19bobo$19bo20b2o$13b2o2b2ob4o16bobob2o$13bo2bobobo2bo18bobo$15b 2o4bo2b2o15b2obo$16bob2o2b2o2bo7b2ob2obobob2o$16bobob2o2b2obo7bobo3b2o 3bo$17bo5bo3bo7bobobo3b3o$18b3obob3o9b7o$20bobobo17bob2o$34b6o3b2obo6b 2o$21b3o9bo7b2o3bo7bo$7b2o25b3o6b3o6bo$6bo2bo6b2o11b2o5bo6bo6b4o$5bob obo5b3o4b2o5b2o6b6o6bo4bo$5bobob2o6bo4b2o24bob5o$3b2obobo2bo7b3o2bo23b obo4b2o$3bo2bo3b3o6b5o4b3o16b2o5bo2bo$2obo2bobo2bo9b2o5b3o6bob3o5bo2b obobob2o$o2b2o4b2o24b2o3bobo4b3obo2bo$b2o4bobo7b2o16b2o2bo2b2o3bo3bob 2o$3bobobobo5bo4bo14b2obo8b2obobo$3bo4bo18b2o11bob2o4bobobo$4b4o6bo6b o5b2o8b2o9bo2bo$5bo6b3ob2obob3o16b2o7b2o$3bo7bo3bo3bo4bo$3b2o6bobob2o 2b5o10b3o$12b2obo2bo14bobobo$15b5obo9b3o3b3o$12b3o5bobo7bo4bo4bo$11bo 3b2o3bobo7bob2o2bob2obo$12b2obobob2ob2o7bo2b4obobo$13bo2bo15b2o4b2ob2o $13bobo18bo2bobobo2bo$12b2obobo16b4ob2o2b2o$16b2o20bo$36bobo$36b2o! [[ THEME 6 GRID THUMBNAIL THUMBSIZE 2 GPS 18 ]]

There are other ways to stabilize this. For example, instead of trying to replace the block, what if we try to find a way to reinforce the block to save it from being destroyed. This works in other contexts. For example, a glider hitting a block from as close to the block's line of diagonal symmetry as possible ordinarily destroys the block, but the block can be saved by an interaction where it would normally act as a catalyst.

x=38, y = 13, rule = B3/S23 2bo19bo$obo17bobo$b2o18b2o$37bo$35b3o$34bo$35bo$8b2o18b2o2bo2bo$8b2o18b 2o2bo$32bobo$33bobo$35bo$35b2o! [[ THEME 6 GRID THUMBNAIL THUMBSIZE 2 GPS 10 T 20 PAUSE 1 ]]

Note that the block dies the same way as if it had been sparked by a domino spark in a certain way, so we can use this for testing purposes.

x=28, y = 9, rule = B3/S23 19bobo2b3o$20b2o2bobo$2o2b2o14bo3bo2bo$2o2b2o19b2o$4b2o3b2o$9b2o2$2b2o 18b2o$2b2o18b2o! [[ THEME 6 GRID THUMBNAIL THUMBSIZE 2 GPS 10 T 7 PAUSE 1 ]]

(It isn't guaranteed to be completely accurate, but it turns out to work for our purposes.)

For example, the p10 traffic light hassler can restore the block when it is sparked by a domino spark.

x=19, y = 20, rule = B3/S23 5b2o3b2o$5b2o3b2o3$5bo5bo$5bo5bo$2o2bobo3bobo2b2o$2o3bo5bo3b2o$5bo5bo 3$5bo5bo$2o3bo5bo3b2o$2o2bobo3bobo2b2obo$5bo5bo6bo$5bo5bo3$5b2o3b2o$5b 2o3b2o! [[ THEME 6 GRID THUMBNAIL THUMBSIZE 2 GPS 10 T 20 PAUSE 1 ]]

This suggests that it can restore the block, and it indeed can—but not every eighteen generations because ten is not a factor of eighteen.

x=40, y = 31, rule = B3/S23 5b2o3b2o$5b2o3b2o$5b2o3b2o$5b2o3b2o$4b2o5b2o$5bobobobo$o4bobobobo4bo$ 2o3bobobobo3b2o$4b2o5b2o$4b2o5b2o$4b2o5b2o7b2o$4b2o5b2o7b2o6b2o3b2o$2o 3bobobobo3b2o11b2o3b2o$o4bobobobo4bo$5bobobobo16bo5bo$4b2o5b2o5b3o7b2o 3b2o$5b2o3b2o6b3o3bo3bobobobo3bo$5b2o3b2o11bo5b2ob2o5bo$5b2o3b2o11b2o 3bobobobo3b2o$5b2o3b2o6b2o8b2o3b2o$18b2o8bo5bo$28bo5bo$28b2o3b2o$23b2o 3bobobobo3b2o$23bo5b2ob2o5bo$24bo3bobobobo3bo$28b2o3b2o$28bo5bo2$28b2o 3b2o$28b2o3b2o! [[ THEME 6 GRID THUMBNAIL THUMBSIZE 2 GPS 10 T 20 PAUSE 1 ]]

Let's therefore confine our search to oscillators whose period divides eighteen. We also need a oscillators that perturb a block, so let's investigate the blonker, which has period six. There is indeed a way for the block to survive being sparked without any permanent damage.

x=13, y = 9, rule = B3/S23 12bo$12bo$10b3o$9b2o$7b2o$o2bo6bo$obo5bob2o$2bo3bobobo$3b2obo! [[ THEME 6 GRID THUMBNAIL THUMBSIZE 2 GPS 4 ]]

Plugging it into our reaction shows that it indeed works.

x=30, y = 11, rule = B3/S23 15b2o$15b2o$3bo2b3ob2o16b2o$3b3obo2b2o13b2obo$7bo16b3o$4b3o6b3o8bobo$ 4bo8b3o7b2ob2o$bobo14b2o3bo2b2o$o17bo2bo4b2o$bo11b2o4bobobo$13b2o! [[ THEME 6 GRID THUMBNAIL THUMBSIZE 2 GPS 9 ]]

More adventurous experimentation shows that V-sparks also work.

x=18, y = 11, rule = B3/S23 o8b2o$o8b2o$bo$bo$bo6bo$o7bo$7b2o5b2o$13bo2b2o$14bobo$7b2o6bo$7b2o! [[ THEME 6 GRID THUMBNAIL THUMBSIZE 2 GPS 18 T 6 PAUSE 0.8 T 15 PAUSE 0.8 ]]

So do P-sparks (or rather, the children of P-sparks).

x=17, y = 17, rule = B3/S23 o2bo$b3o3$o$b2o$2o7b2o$9b2o3$8bo$8bo$7b2o5b3o$14bobo$13bo$7b2o$7b2o! [[ THEME 6 GRID THUMBNAIL THUMBSIZE 2 GPS 18 T 5 PAUSE 0.4 T 6 PAUSE 0.4 T 14 PAUSE 0.4 T 15 PAUSE 0.4 ]]

This was the basis for the following period-three catalyst solution found by Matthias Merzenich.

x=30, y = 31, rule = B3/S23 4b2o$3bo2bo$3b3o3b2o$6b4obo$3b2o6bo$2bobobo2b2ob2o$2bo2b2obobo3bo$b2o 2b2o5bobo$3b2o3bo4bo$3bob3o3bo$2obobobob2o4b2o$obo2bo3bo5b2o4b2o$3b2o 5bo9bo2bo$5b3o3bo8bob2o$5bo3b2o8b2o$6b3o4b3o5b3o$9b2o2b3o3b2o3bo$6b2o bo8bo3b3o$6bo2bo9bo5b2o$7b2o4b2o5bo3bo2bobo$13b2o4b2obobobob2o$18bo3b 3obo$16bo4bo3b2o$15bobo5b2o2b2o$15bo3bobob2o2bo$16b2ob2o2bobobo$18bo6b 2o$18bob4o$19b2o3b3o$23bo2bo$24b2o! [[ THEME 6 GRID THUMBNAIL THUMBSIZE 2 GPS 9 ]]

Periodic catalysts, including those of low period, can also be useful in other contexts, such as the p3 bumper.

Thus, you have learned several useful lessons:

  • One can find interesting reactions by observing random soups or scribbles or from having computers search.
  • If a reaction almost works, try going back and seeing exactly how it fails; it may be salvageable.
  • Sparkers are useful for stabilizing reactions.
  • The period of a sparker must be a factor of the period of the reaction that it stabilizes.
  • Some oscillators require multiple stabilizing sparkers.
  • If an object is devoured by a reaction, the interaction can be analyzed and tested to determine possible replacements.
  • Catalyses can stabilize objects that would otherwise be destroyed.
  • Periodic catalysts can sometimes do what stable catalysts can't.