Rule:RepRoller2D v2
@RULE RepRoller2D_v2
@TABLE
- 2D version of RepRoller. Thanks to Adam Goucher for the 2-phase idea!
- contact: tim.hutton@gmail.com
n_states:18 neighborhood:vonNeumann symmetries:none
var a={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17} var b={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17} var c={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17} var d={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17} var e={3,4,7} var f={5,6,8} var g={1,3,5} var h={2,4,6} var i={0,1,2,9,10} var j={3,5} var k={4,6} var m={9,11,12} var n={10,13,14} var p={1,11,13} var q={2,12,14} var r={11,13} var s={12,14} var t={1,2}
- Initialisation phase:
17,0,a,b,c,8 17,a,b,c,d,7 t,17,a,b,c,17
- Horizontal phase:
- e : carrying a 0
- f : carrying a 1
- g : a 0 or on top of a 0
- h : a 1 or on top of a 1
- i : a quiescent cell
- j : a carrying state on top of a 0
- k : a carrying state on top of a 1
- 1 : 0
- 2 : 1
- 3 : carrying a 0 on top of a 0
- 4 : carrying a 0 on top of a 1
- 5 : carrying a 1 on top of a 0
- 6 : carrying a 1 on top of a 1
- 7 : trailing edge 0
- 8 : trailing edge 1
- leading edge deposits the state it is carrying
0,a,b,c,e,1 # write 0 0,a,b,c,f,2 # write 1
- carrying states walk over things without destroying them
g,a,b,c,e,3 # step onto 0 carrying 0 h,a,b,c,e,4 # step onto 1 carrying 0 g,a,b,c,f,5 # step onto 0 carrying 1 h,a,b,c,f,6 # step onto 1 carrying 1
- trailing edge picks up the state it is standing on
j,a,b,c,i,7 # picking up a 0 k,a,b,c,i,8 # picking up a 1
- the trailing edge quiesces
7,a,b,0,d,9 7,a,b,c,d,1 8,a,b,0,d,10 8,a,b,c,d,2
- Vertical phase:
- 9 : trailing edge 0
- 10 : trailing edge 1
- 11 : carrying a 0 on top of a 0
- 12 : carrying a 0 on top of a 1
- 13 : carrying a 1 on top of a 0
- 14 : carrying a 1 on top of a 1
- m : carrying a 0
- n : carrying a 1
- p : a 0 or on top of a 0
- q : a 1 or on top of a 1
- r : a carrying state on top of a 0
- s : a carrying state on top of a 1
- leading edge deposits the state it is carrying
0,a,b,m,d,1 # write 0 0,a,b,n,d,2 # write 1
- carrying states walk over things without destroying them
p,a,b,m,d,11 # step onto 0 carrying 0 q,a,b,m,d,12 # step onto 1 carrying 0 p,a,b,n,d,13 # step onto 0 carrying 1 q,a,b,n,d,14 # step onto 1 carrying 1
- trailing edge picks up the state it is standing on
r,a,b,i,d,9 # picking up a 0 s,a,b,i,d,10 # picking up a 1
- the trailing edge quiesces
9,a,b,c,d,1 10,a,b,c,d,2
- Machine operation phase
- 15: signal head
- 16: signal tail
1,10,10,2,2,15 # self-triggering (best I could come up with without carrying 3 states) 2,16,16,16,16,1 # revert to trigger 2,15,b,c,d,15 2,a,15,b,c,15 2,a,b,15,c,15 2,a,b,c,15,15 15,a,b,c,d,16 16,0,a,b,0,17 # trigger the next replication 16,a,b,c,d,2