Arbitrary constructor rule
Posted: February 15th, 2015, 1:46 pm
I made a rule that should support replicators. It's possible to make any pattern of state 5 in this rule. You can also translate Bliptile patterns to this rule. Just switch state 3 with state 7 and state 2 with state 8.
Demo pattern:
In the right pattern, it shows how to cycle and activate. It first cycles through wire-emitter-activator. When the activator is hit, it generates a particle. If this particle hits an inactive wire (state 5), it activates the wires. If it hits active wire (state 1), it simply turns into an electron. The rule doesn't support universal construction, but at least for now I'm fine with that.
The bottom-left pattern demonstrates how to construct an arbitrary cell. The gap between signals 1-2, 3-4, 5-6, 7-8 is always 4 cells. The gap between 1-3 and 5-7 is also identical but not fixed. The gap between 1-3 determines the x-value of the new cell, and the y-value is determined by the 1-5 gap. The formulas are: x=1-3 gap-7 y=1-5 gap+1 The x-value must be less than the y-value, so the bottom of the constructable region is a diagonal line. This will probably be significant in a replicator design. The additional spigot is necessary to construct the platform above it. That is demonstrated in the top-middle pattern. The construction plate will be much longer in practice. The strategy to make it is similar to Banks's technique in his Banks-IV paper. (replicator creates long,thin construction assistant from internal constructor.)
The top-left pattern shows self-destruction. This happens when a worm strikes an active wire. It creates a different kind of eater which eats everything in its path.
And last the top-middle pattern shows how to activate the isolated row of state 9 cells in the arbitrary constructor to its left. Simply fire an activator particle at the row.
Code: Select all
@RULE Stringconstruct
0 empty
1 wire-active
2 chead-1
3 chead-2
4 eater
5 wire-inactive
6 wire-new
7 ehead
8 etail
9 emitter
10 o-emmiter
11 i-emmiter
12 h-emmiter
13 activator block
14 a-head
15 a-wire-head
16 safe eater
@TABLE
n_states:17
neighborhood:Moore
symmetries:rotate4reflect
var a1={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}
var a2=a1
var a3=a1
var a4=a1
var a5=a1
var a6=a1
var a7=a1
var a8=a1
var c1={0,2,3,5,6,7,9,11,12,13,14,15,16}
var c2=c1
var c3=c1
var c4=c1
var c5=c1
var c6=c1
var c7=c1
var c8=c1
var d1={0,1,2,3,5,6,8,9,10,12,14,16}
var d2=d1
var d3=d1
var d4=d1
var d5=d1
var d6=d1
var d7=d1
var d8=d1
4,1,a1,a2,a3,a4,a5,a6,a7,0
1,4,a1,a2,a3,a4,a5,a6,a7,4
9,4,a1,a2,a3,a4,a5,a6,a7,4
7,4,a1,a2,a3,a4,a5,a6,a7,4
8,4,a1,a2,a3,a4,a5,a6,a7,4
1,16,a1,a2,a3,a4,a5,a6,a7,16
16,a1,a2,a3,a4,a5,a6,a7,a8,0
2,6,a1,a2,a3,a4,a5,a6,a7,0
2,a1,a2,a3,a4,a5,a6,a7,a8,3
3,16,a1,a2,a3,a4,a5,a6,a7,6
3,11,a1,a2,a3,a4,a5,a6,a7,4
3,1,a1,a2,a3,1,a4,a5,a6,4
3,a1,a2,a3,a4,a5,a6,a7,a8,1
0,3,c1,a1,a2,a3,a4,a5,c2,2
5,3,c1,c2,c3,c4,c5,c6,c7,11
6,9,a1,a2,a3,a4,a5,a6,a7,0
6,10,a1,a2,a3,a4,a5,a6,a7,0
6,a1,a2,a3,a4,a5,a6,a7,a8,5
4,a1,a2,a3,a4,a5,a6,a7,a8,0
7,a1,a2,a3,a4,a5,a6,a7,a8,8
8,a1,a2,a3,a4,a5,a6,a7,a8,1
1,7,d1,d2,d3,d4,d5,d6,d7,7
9,7,a1,a2,a3,a4,a5,a6,a7,10
10,7,a1,a2,a3,a4,a5,a6,a7,9
9,6,a1,a2,a3,a4,a5,a6,a7,10
10,6,a1,a2,a3,a4,a5,a6,a7,9
0,10,c1,a1,a2,c2,a3,a4,c3,3
1,9,a1,a2,c1,1,c2,a3,a4,16
11,6,d1,d2,d3,d4,d5,d6,d7,5
11,2,a1,a2,a3,a4,a5,a6,a7,12
11,14,a1,a2,a3,a4,a5,a6,a7,9
12,6,a1,a2,a3,a4,a5,a6,a7,11
12,16,a1,a2,a3,a4,a5,a6,a7,13
0,13,3,a1,a2,a3,a4,a5,a6,13
13,13,d1,d2,d3,d4,d5,d6,d7,0
13,7,a1,a2,a3,a4,a5,a6,a7,0
13,14,a1,a2,a3,a4,a5,a6,a7,0
13,15,a1,a2,a3,a4,a5,a6,a7,0
13,9,a1,a2,a3,a4,a5,a6,a7,0
0,13,13,a1,a2,a3,a4,a5,13,14
0,14,a1,a2,11,11,11,a3,a4,14
0,14,11,11,a1,a2,a3,a4,a5,14
0,14,d1,d2,d3,d4,d5,d6,d7,14
14,a1,a2,a3,a4,a5,a6,a7,a8,13
5,14,a1,a2,a3,a4,a5,a6,a7,15
5,15,a1,a2,a3,a4,a5,a6,a7,15
15,a1,a2,a3,a4,a5,a6,a7,a8,8
11,15,a1,a2,a3,a4,a5,a6,a7,9
1,14,a1,a2,a3,a4,a5,a6,a7,7
@COLORS
0 0 0 0
1 0 0 255
2 255 0 0
3 0 255 0
4 255 255 255
5 0 0 128
6 0 128 128
7 255 127 0
8 127 63 0
9 255 127 127
10 127 255 127
11 127 63 63
12 191 63 63
13 127 127 255
14 0 255 255
15 0 191 191
16 127 127 127Code: Select all
x = 65, y = 40, rule = Stringconstruct
27.P19.P4.A3.A$27.P19.P$12.A14.P19.P$11.3AI12.P11.6K2.P4.K3.K$11.A15.
P19.P4.5E$11.A15.P19.P$27.P13.N5.P$11.C15.P13.M5.P$11.A15.P19.P$11.A
15.21P$11.A15.P$11.P15.P$27.P$27.P$28P$27.P$27.P$27.P$27.P$27.P$27.P$
27.P$27.P7.G4A$27.P9.A.A$27.P9.12A$27.P11.A$3.I.I21.P11.A$2.AI.I8.7I
6.P11.A$2.AI.I21.P11.A$2.AI.I8.7I6.P11.A$2.AI.I9.5A7.P11.A$3.I.I21.P
11.A$27.P11.A$27.P11.A$4.I22.P8.AHGA$4.A.2AG.3A.3A.AGH.2A3.P8.A2.A$3.
2A.H.H.A.A.A.G.A.A.A4.P8.A2.A8.17I$4.G.G.A.A.A.H.H.A.A.A4.P8.6AI$4.H.
A.A.H.A.G.A.A.A.A4.P12.A7.17I$4.3A.2AG.3A.AGH.3A4.P20.17A!
The bottom-left pattern demonstrates how to construct an arbitrary cell. The gap between signals 1-2, 3-4, 5-6, 7-8 is always 4 cells. The gap between 1-3 and 5-7 is also identical but not fixed. The gap between 1-3 determines the x-value of the new cell, and the y-value is determined by the 1-5 gap. The formulas are: x=1-3 gap-7 y=1-5 gap+1 The x-value must be less than the y-value, so the bottom of the constructable region is a diagonal line. This will probably be significant in a replicator design. The additional spigot is necessary to construct the platform above it. That is demonstrated in the top-middle pattern. The construction plate will be much longer in practice. The strategy to make it is similar to Banks's technique in his Banks-IV paper. (replicator creates long,thin construction assistant from internal constructor.)
The top-left pattern shows self-destruction. This happens when a worm strikes an active wire. It creates a different kind of eater which eats everything in its path.
And last the top-middle pattern shows how to activate the isolated row of state 9 cells in the arbitrary constructor to its left. Simply fire an activator particle at the row.