# 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: Then let it run for 1000 generations. It expands to a blob 208 by 208 in size, population 21,132:But 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:

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

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

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:

So we’re back to infinitely growing irregular blob behavior. Population 53,457. How about B347/S456?Likewise, but slower growing; population only 15,686. Want to guess at B348/S456?Blob 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:
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:but 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.

## One thought on “Changing the rules”

1. B345/S456 is really quite anomalous among this bunch. The others are somewhat predictable; e.g. B3/S456 dies roughly because B3 and S456 are compatible with different blob densities. Note how explosive B3 rules such as B3/S023 or B3/S124 tend towards lower densities than explosive S456 rules such as B34/S456 or B347/S456. The reason latter of these grows slower than the former seems to be a slightly higher-order effect, due to how B7 is incompatible with S456 ash.

You can even roughly calculate some of this. Start by assuming a random distribution of cells with uniform density. In a stable state (not necessarily a still state), the expected density of surviving cells + born cells should be equal to the current density. Given a slightly different density, you will find that this model sometimes converges to the stable density faster, sometimes slower. And sometimes it converges instead to zero.