"Rule 110" Unit Cell
Jason Summers has put together a "Rule 110" unit cell. A unit cell is a Game of Life pattern which acts as if it were a cell or component in another automata, allowing the Game of Life to incorporate the abilities and results of that automata into itself. For example, several years ago David Bell created a Life unit cell which can be used to recursively simulate the Game of Life.
"Rule 110" is a 1-dimensional non-totalistic cellular automaton. A cell's next state depends on its current state and the states of its two nearest neighbors, as follows:
|Gen 0||Gen 1|
From Summers' description of his pattern:
The logic used in the pattern is (B AND NOT A) NOR (B XOR C), where A is the cell to the left, B is the cell itself, and C is the cell to the right. This produces the inverse of the correct rule-110 result. The result is then put through various duplication, reflection, and inversion reactions to produce four copies of an uninverted signal. One copy is sent to the cell on the left, one to the cell on the right, one is fed back into the same cell, and one is emitted upward as a visual record of the cell's states.
That the horizontal spacing (256) is a power of 2 is intentional, and might make it more efficient to run in Hashlife. The period (1200) can't reasonably be made a power of 2.
It should be easy to adjust the period by multiples of 120 generations, and the horizontal spacing by multiples of 60 cells. Other adjustments are possible, but more difficult.
As Summers notes, it would be an interesting project to build a puffer which lays down these unit cells as its output, and do so at a rate faster than they'd be needed by the "Rule 110" automata run.
- A: Marker Tubs and initial Block
- B: Glider->Spaceship reaction
- C: Spaceship->Glider reaction
- D: Turn Glider 90°
- E: Invert & turn Glider 90°
- F: Split stream
- G: Duplicate stream
- Red: Input streams
- Green: Output streams
- Blue: Internal streams
Unlabeled are a couple of signal generator Glider Guns and a couple of Fishook Eaters which are a part of the logical operators. The objects in the corners are used for alignment of multiple cells.
Using the pattern:
To use the pattern, place copies such that the "decorative still-lifes" at the corners coincide. The initial state of the cell is forced to be ON by the glider located between the tubs (A in the pattern). Remove the block infront of it to set the cell state to OFF. If the Fishook Eaters on the left and right edges don't disappear on their own in a few generations, then they can be removed manually before starting. For Game of Life programs that don't like the annotation format commands, a file without the formatting is also available