Code: Select all
n_states:3
neighborhood:Moore
symmetries:rotate8reflect
var a={1,2}
## Life rules
# birth
0,a,a,a,0,0,0,0,0,a
0,a,a,0,a,0,0,0,0,a
0,a,a,0,0,a,0,0,0,a
0,a,0,a,0,a,0,0,0,a
0,a,0,a,0,0,a,0,0,a
# death with 0/1
a,0,0,0,0,0,0,0,0,0
a,a,0,0,0,0,0,0,0,0
# death with 4
a,a,a,a,a,0,0,0,0,0
a,a,a,a,0,a,0,0,0,0
a,a,a,a,0,0,a,0,0,0
a,a,a,0,a,a,0,0,0,0
a,a,a,0,a,0,a,0,0,0
a,a,a,0,a,0,0,a,0,0
a,a,a,0,0,a,a,0,0,0
a,a,a,0,0,a,0,a,0,0
a,a,0,a,0,a,0,a,0,0
# death with 5
a,0,0,0,a,a,a,a,a,0
a,0,0,a,0,a,a,a,a,0
a,0,0,a,a,0,a,a,a,0
a,0,a,0,a,0,a,a,a,0
a,0,a,0,a,a,0,a,a,0
# death with 6
a,0,0,a,a,a,a,a,a,0
a,0,a,0,a,a,a,a,a,0
a,0,a,a,0,a,a,a,a,0
a,0,a,a,a,0,a,a,a,0
# death with 7/8
a,a,a,a,a,a,a,a,0,0
a,a,a,a,a,a,a,a,a,0
## Wire rules
# normal wire
0,1,0,0,0,2,0,0,0,1
0,1,0,0,2,0,0,0,0,1
1,2,0,0,0,0,0,0,0,2
1,2,0,0,0,2,0,0,0,2
2,1,0,0,0,1,0,0,0,1
# beehive pusher
1,2,0,0,0,1,0,0,0,2
2,1,0,1,0,0,0,0,0,0
0,2,1,0,1,1,1,0,0,1
1,2,0,1,1,1,1,1,0,0
# splitter
2,1,0,0,2,1,2,0,0,1
1,1,0,2,2,2,2,2,0,2
2,2,0,2,2,2,1,0,0,0
2,2,0,1,2,2,2,2,0,0
0,2,0,0,2,2,1,0,0,1
2,2,0,0,1,2,1,0,0,1
0,1,2,2,2,0,2,0,0,2
1,2,2,1,0,0,0,0,0,2
1,2,2,0,0,0,0,0,0,2
# nor
0,1,0,1,1,0,1,2,0,1
1,1,0,2,1,0,1,2,0,0
0,0,2,1,1,1,1,1,2,1
2,0,1,1,2,0,2,0,2,0
1,0,2,1,0,1,0,1,2,2
0,2,0,0,1,2,1,0,0,1
2,1,0,1,0,1,0,1,0,0
0,0,0,1,2,1,2,0,2,2
1,0,0,0,0,0,2,1,2,2
0,2,1,0,0,1,2,1,0,1
1,1,2,2,0,2,1,0,0,0
# input
0,1,0,0,2,1,2,0,0,2
1,1,2,0,0,0,0,0,0,2
Incidentally this rule can lead to some very chaotic patterns; for example I tried firing two state-2 gliders at a state-1 block and it ran for over 1,200,000 generations without stabilizing (it may be infinite for all I know; I got bored of watching it) as boundaries between areas of the two states tend to stay rock solid themselves and spew chaos in the vicinity. I would prefer changing the rules so that, while everything I've made so far still works, any combination of state 1 and 2 that isn't necessary for wiring flips to the opposite state in the hope that that would remove this "rock solid" property and encourage tri-state oscillators and other interesting patterns and perhaps make it easier to engineer a whole pattern state-flipper.
Yes, I already know that one can build a Turing machine in Life. However, doing it in classic Life requires a huge number of cells and a huge number of generations. The entire point of what I'm doing is to make calculation possible using a "small" number of cells and generations, so that you can actually see what's happening without zooming out past 1:1.
Okay, put more correctly: it's an "A AND NOT (B OR C)" gate, where A is the top input, B is the left input and C is the right input. But the top input was always supposed to be a period 6 clock (or whatever period you like so long as it's at least 6 and is in sync with the other inputs) - so I only count B and C as "real" inputs. Certainly, if you want an AND gate, it's easier to wire up two of these in an AND NOT NOT configuration than whatever the normal NOR construction is, but it was intended to be a NOR gate.
Has anyone ever built a pattern which stretches the wire medium I'm using (three parallel lines stabilized by blocks)? I imagine this would be the easy part, compared to synthesizing corners, splitters, NOR gates and input/output constructions, since those use both live states.
In the mean time, I'll experiment with Herschel tracks to see if I can do anything useful with that output reaction...