Has anyone seen a version of Rule 30 for a 2D array, instead of 1D? I'm doing some searching but can't find one. Somewhat tangential to my angle of attack, but would be helpful to me.
There are 2D rules that are aesthetically similar to Rule 30 (in how reactive and "fluffy" they are, and how they tend to perpetuate instead of die down), but a 2D and a 3D rule are fundamentally different.
But you can apply simple transformations on rules, like reflecting them (1D and 2D) and rotating them (2D only), or layering them (having a bunch of lower dimension rules running in parallel). Or you can perform a 1D rule along each horizontal/vertical axis (or even diagonal axis) and then combine them somehow (like XOR). But that will typically have a vastly different behavior.
One of my favorite 2D rules that looks kind of like an animated version of Rule 30 is "HGLASS", named that because it looks kind of like the falling sand in an hourglass. If you run it in a torus (edges wrap around), it tends to settle into a circular dependency tree with gaps bubbling up through it like space between cars in a traffic jam.
This is a five-neighbor two-state two-dimensional cellular automaton found at random by Margolus and Toffoli. It organizes a nice sliding flow on a random screen, and it disassembles solid starting patterns in an interesting way.
What would this mean? You could have a rule that just implemented rule 30 for one adjacent row or column of the plane, but that would just give you stripes of 1d rule 30. Is there some obvious way of generalizing the 1d rules to 2d that I'm missing? What properties would you expect to be conserved?
My main attack vector is to build up a simple new math starting with just 1 and 0 to define both the problem and solution in and see where it goes, hopefully creating useful side effects along the way. If I were to solve a problem my hunch is it will be related to impossibilities in formally defining "infinite sequence" in the problem definition in such a language.
Quote from previous link, in answer to a similar question comparing CAs (1d) to Conway's Life (2d):
"The pictures you're looking at, one of the axes is time. One row "becomes" the row below it. Each time-step iteration adds a row to the bottom, while the rows above it are immutable (because they are in the past)."
But you can apply simple transformations on rules, like reflecting them (1D and 2D) and rotating them (2D only), or layering them (having a bunch of lower dimension rules running in parallel). Or you can perform a 1D rule along each horizontal/vertical axis (or even diagonal axis) and then combine them somehow (like XOR). But that will typically have a vastly different behavior.
One of my favorite 2D rules that looks kind of like an animated version of Rule 30 is "HGLASS", named that because it looks kind of like the falling sand in an hourglass. If you run it in a torus (edges wrap around), it tends to settle into a circular dependency tree with gaps bubbling up through it like space between cars in a traffic jam.
https://www.fourmilab.ch/cellab/manual/rules.html#HGlass
This is a five-neighbor two-state two-dimensional cellular automaton found at random by Margolus and Toffoli. It organizes a nice sliding flow on a random screen, and it disassembles solid starting patterns in an interesting way.
You can see it here:
https://donhopkins.com/home/CAM6/
1. Click the gray square in the upper right corner.
2. Click "Rules".
3. Select from the Rule dropdown "von Neumann HGlass Down".
4. Draw in the cells.
5. Click in the histogram at to to change the drawing cell value. Click "Tools" to configure the drawing tool.
6. Play around with the other variants of HGLASS (Up/Down/Left/Right, echo, heat) and parallel rules like 4 HGlass Down / All)