An honor just to be nominated

Rich’s p16 came in at 11th place in the 2016 Pattern of the Year awards. First place was never even a remote possibility, not in a year that produced the Caterloopillar and the Copperhead. (I actually thought the latter would win handily, but I guess that’s just my relative lack of interest in engineered spaceships showing.)

Changing the rules (part 3)

Take a look at a pre-loaf and a pi:screen-shot-2016-09-07-at-11-37-22-pm

If you run them in B37c/S23, the pre-loaf stabilizes quickly, but the pi takes a while — and some space. It needs 110 generations to settle down.

If you run them in B37e/S23, though, the pre-loaf just becomes a loaf immediately and the pi stabilizes much more quickly, in only 23 generations, and without spreading out so much.

So based on that, maybe it’s plausible B37c/S23 could be explosive while B37e/S23 isn’t. And then that might help account for why B37/S23 is explosive while B36/S23 and B38/S23 aren’t.

But this is still rather hand-wavy. Plausible is one thing, proved is something else entirely. First, it’s not just what happens to these objects that matters, but also how likely they are to arise in the first place. No matter how long and over what area a pi evolves, it won’t cause anything if it never crops up in the first place.

Second, in addition to pre-loafs and pis, you also need to consider larger sub-patterns with pre-loaves and pis embedded in them. How likely are they and what do they do under the two rules?

Anyway, proof or no proof, B37e/S23 really isn’t explosive. That means — unlike B37/S23 — it can be explored with a soup search. But apgmera, the C++ version 3 of apgsearch, can’t handle non-totalistic rules. The Python version 1.0 can, or rather a hacked version of it can. Slowly! I’ve been running it and it’s done 2 or 3 soups per second, about 3 orders of magnitude slower than apgmera can run B3/S23. And for some reason it seemed not to be sending results to Catagolue.*

But anyway, 11c/52 diagonal puffers cropped up several times, laying trails of blocks and loaves:

screen-shot-2016-09-07-at-11-49-25-pmThis puffer evolves from this 7 cell object:screen-shot-2016-09-07-at-11-54-50-pmAnd if there’s a suitably placed ship nearby, it becomes an 11c/52 diagonal spaceship. This has cropped up in several soups.screen-shot-2016-09-07-at-11-44-59-pm

*Edit: My B37e/S23 hauls are on Catagolue, but under the enharmonic name B37-c/S23.

Changing the rules (part 2a)

That lame explanation seems even more lame when you consider this: The non totalistic rule B37c/S23 (meaning birth occurs if there are 3 live neighbors, or if there are 7 live neighbors with the dead neighbor in the corner of the neighborhood) is explosive, but B37e/S23 (birth occurs if there are 3 live neighbors, or if there are 7 live neighbors with the dead neighbor on the edge of the neighborhood) isn’t.

Changing the rules (part 2)

Here’s an even more perplexing (to me, at least) instance of different CA behavior under similar-but-different rules. Consider this 32 x 32 soup:Screen Shot 2016-09-04 at 10.14.02 AM B36/S23 is a Life-like rule sometimes called HighLife. Many objects behave the same way as in Life; in particular, blocks, loaves, boats, and beehives are still lifes; blinkers are p2 oscillators; gliders are c/4 diagonal spaceships. So after 378 generations in B36/S23 when that soup looks like this, it’s stabilized:Screen Shot 2016-09-04 at 10.10.26 AM B38/S23 has no nickname I know of. Under that rule, the same soup stabilizes in 483 generations:Screen Shot 2016-09-04 at 10.10.52 AM And in B37/S23… here’s what it evolves to after 10,000 generations:Screen Shot 2016-09-04 at 10.11.08 AMPopulation 17,298 and growing, presumably forever.

Fairly typical. I’ve seen some soups take several thousand generations to stabilize in B38/S23, and I’ve seen a few — very few — stabilize in B37/S23. But most soups stabilize in 1000 generations or so in B36/S23 and B38/S23… and almost all soups explode in B37/S23.

Does that make any sense to you? Explain it to me, then.

I guess you can wave your hands and say “well, if you have few births you don’t get explosive behavior, and if you have many births in some small region you get momentary overpopulation which then crashes in the next generation, but somewhere in the middle there’s a point where you have not too few births but not enough crashes and it explodes”. But is that the best we can do at understanding this?

Edit: In fact, that lame explanation seems even more lame when you consider this: The non totalistic rule B37c/S23 (meaning birth occurs if there are 3 live neighbors, or if there are 7 live neighbors with the dead neighbor in the corner of the neighborhood) is explosive, but B37e/S23 (birth occurs if there are 3 live neighbors, or if there are 7 live neighbors with the dead neighbor on the edge of the neighborhood) isn’t.

Changing the rules

It surprises me how hard it can be to guess what kind of behavior a given CA rule will produce. There are some things that are fairly obvious. For instance, under a rule that doesn’t include births with fewer than 4 live neighbors, no pattern will never expand past its bounding box. (Any empty cell outside the bounding box will have no more than 3 live neighbors, so no births will occur there.)

But beyond a few observations like that, it’s hard to predict. At least for me.

Consider the rule B34/S456, for a semi random example. Start with a 32 by 32 soup at 50% density:gen0 Then let it run for 1000 generations. It expands to a blob 208 by 208 in size, population 21,132:b34s456But change the B34/S456 rule to B3/S456 or B4/S456 — removing one number or the other from the birth rule — and either way, the same initial configuration dies.

How about removing one number from the survival rule? B34/S56 collapses to a little period 2 oscillator:b34s56

And so does B34/S45. But B34/S46 dies.

Now try adding numbers to the birth rule. B345/S456 for instance:b345s456

At first it expands, but only until it makes this near-square shape. Its boundaries no longer move, but oscillate with period 2. The interior is mostly static but there are a couple of regions that oscillate with period 3, so the whole thing is a p6 oscillator.

Here’s B346/S456:b346s456

So we’re back to infinitely growing irregular blob behavior. Population 53,457. How about B347/S456?b347s456Likewise, but slower growing; population only 15,686. Want to guess at B348/S456?b348s456Blob again, but population only 9672. Not too surprising. Except that both B347/S456 and B348/S456 grow slower than B34/S456, even though both differ only in that there are more ways to produce a birth!

Finally let’s add numbers to the survival rule. B34/S4567 first:b34s4567
Population 196,655. If you see faint squares on that blob it’s an artifact of the image reduction. Click on the image to see it at full size. It’s interesting: there are chaotic regions interspersed with domains where the live cells are arranged regularly. Most of the interior cells are stable or oscillate with period 2, and the only real evolution occurs at the boundary of the blob. That’s true of the B34/S4568 blob too:b34s4568but here the growth rate is much smaller — the population’s only 23,299 — and the interior of the blob’s pretty random with only very small regular domains.

So twelve rules: B34/S456, B4/S456, B3/S456, B34/S56, B34/S46, B34/S45, B345/S456, B346/S456, B347/S456, B348/S456, B34/S4567, B34/S4568. All look similar in that the last eleven differ from the first only by the addition or removal of a single number. Three die, two collapse to a small oscillator, one shows bounded growth, and the other six show unbounded growth, but not only at different rates but with different behavior: unstable interior versus stable or oscillating interior; random patterns versus random mixed with regular. There’s the seeming paradox that adding a digit to the rule can produce something that grows more slowly, or can even stop it from growing.

Add or subtract a second digit and try guessing what’ll happen. I don’t guess correctly very often.


Big natural ship in B358/S23

Here’s another big spaceship evolving from a soup. The rule here is B358/S23, and the soup has D2_+1 symmetry.Screen Shot 2016-07-17 at 7.06.44 AM

x = 143, y = 41, rule = B358/S23

It goes left to right (right to left in the original soup) at speed 36c/72.

Again, the way this comes about is through development of a small seed. In this case at generation 83 you get a couple of these objectsScreen Shot 2016-07-17 at 12.09.26 PMwhich in four generations recur, inverted, but with some debris.Screen Shot 2016-07-17 at 12.09.44 PMBy itself, this seed becomes a 36c/72 puffer.Screen Shot 2016-07-17 at 12.09.02 PMBut two of them, mirror images at just the right separation, have their smoke trails interact in such a way as to extinguish them, and the result is a spaceship. If you start with this pairScreen Shot 2016-07-17 at 12.24.37 PM

x = 9, y = 29, rule = B358/S23

you end up with a ship, plus a couple of blinkers.

These puffer seeds crop up fairly regularly — they develop into puffers 214 times out of 5,274,253,500 C1 soups — though this looks like the first time two of them have produced a spaceship. This symmetric object isn’t the only way to kill the puffer smoke, though. Here are six other ships produced by placing two puffers at various relative positions and phases. Undoubtedly there are lots more.Screen Shot 2016-07-17 at 7.38.24 AM

x = 363, y = 80, rule = B358/S23


Rich’s p18

Hot on the heels of Rich’s p16, here’s a period 18 oscillator, once again found using apgsearch. It even bears a family resemblance to the p16: D2_+1 symmetry and shuttle behavior. But… it doesn’t work in Life (B3/S23). It works in B357/S23.Screenshot - 070816 - 11:54:22


x = 13, y = 5, rule = B357/S23