There was a small discussion about the smallest r=1 Moore outer-totalistic metacells people had made in various engineered automata, and I wondered what the absolute minimum would be, within Golly's neighborhood and state count limitations. The metacell would have to somehow encode at least 18 bits of information for the rulestring (17 bits if you don't allow B0) plus 1 bit for the current state, plus more if the metacell has a period greater than 1. A 1- or 2-cell metacell is out of the question since the 256-state limit in Golly restricts us to 8 bits per cell at most, and 8*2<18. A 3-cell metacell may be possible, but the tiling would be much more complicated. Instead, I opted for a 2x2 metacell, which gives me much more wiggle room. This means my metacell has to have a period of at least 2, since information can't travel faster than c.
So this is what I made: a 2x2 p2 metacell, in a rule with 79 states. Here it is, simulating CGoL at 1 tick per frame:
and at 2 ticks per frame:
Here is the Nutshell rueltable, which may very well have some mistake since I wrote all of these transitions by hand:
Code: Select all
@NUTSHELL Meta2x2
by HactarCE
USAGE:
* B 0 1 2 3 4 5 6 7 8 / S 0 1 2 3 4 5 6 7 8
* |_____|_____|_____| |_____|_____|_____|
* NE SE SW NE SE SW
NE: B012/S012
SE: B345/S345
SW: B678/S678
Encode each as binary number (MSb is leftmost). Add 15, then arrange states
accordingly. Northwest cell is either state 1 or 2 for "dead" or "live"
respectively.
EXAMPLE:
B - - - 3 - - - - - / S - - 2 3 - - - - -
|_____|_____|_____| |_____|_____|_____|
0 4 0 1 4 0
NE = (0<<3) + 1 + 15 = 16
SE = (4<<3) + 4 + 15 = 51
SW = (0<<3) + 0 + 15 = 15
x = 2, y = 2, rule = Meta2x2
AW$pWP!
0: Blank
1: T0 Dead {t0s0}
2: T0 Live {t0s1}
3: T1 Dead 0 N {t1s0n0}
4: T1 Live 0 N {t1s1n0}
5: T1 Dead 1 N {t1s0n1}
6: T1 Live 1 N {t1s1n1}
7: T1 Dead 1 N D {t1s0n1d}
8: T1 Live 1 N D {t1s1n1d}
9: T1 Dead 2 N {t1s0n2}
10: T1 Live 2 N {t1s1n2}
11: T1 Dead 2 N D {t1s0n2d}
12: T1 Live 2 N D {t1s1n2d}
13: T1 Dead 3 N D {t1s0n3d}
14: T1 Live 3 N D {t1s1n3d}
15: Rule info 00 {r00}
16: Rule info 01 {r01}
17: Rule info 02 {r02}
18: Rule info 03 {r03}
19: Rule info 04 {r04}
20: Rule info 05 {r05}
21: Rule info 06 {r06}
22: Rule info 07 {r07}
23: Rule info 08 {r08}
24: Rule info 09 {r09}
25: Rule info 0A {r0A}
26: Rule info 0B {r0B}
27: Rule info 0C {r0C}
28: Rule info 0D {r0D}
29: Rule info 0E {r0E}
30: Rule info 0F {r0F}
31: Rule info 10 {r10}
32: Rule info 11 {r11}
33: Rule info 12 {r12}
34: Rule info 13 {r13}
35: Rule info 14 {r14}
36: Rule info 15 {r15}
37: Rule info 16 {r16}
38: Rule info 17 {r17}
39: Rule info 18 {r18}
40: Rule info 19 {r19}
41: Rule info 1A {r1A}
42: Rule info 1B {r1B}
43: Rule info 1C {r1C}
44: Rule info 1D {r1D}
45: Rule info 1E {r1E}
46: Rule info 1F {r1F}
47: Rule info 20 {r20}
48: Rule info 21 {r21}
49: Rule info 22 {r22}
50: Rule info 23 {r23}
51: Rule info 24 {r24}
52: Rule info 25 {r25}
53: Rule info 26 {r26}
54: Rule info 27 {r27}
55: Rule info 28 {r28}
56: Rule info 29 {r29}
57: Rule info 2A {r2A}
58: Rule info 2B {r2B}
59: Rule info 2C {r2C}
60: Rule info 2D {r2D}
61: Rule info 2E {r2E}
62: Rule info 2F {r2F}
63: Rule info 30 {r30}
64: Rule info 31 {r31}
65: Rule info 32 {r32}
66: Rule info 33 {r33}
67: Rule info 34 {r34}
68: Rule info 35 {r35}
69: Rule info 36 {r36}
70: Rule info 37 {r37}
71: Rule info 38 {r38}
72: Rule info 39 {r39}
73: Rule info 3A {r3A}
74: Rule info 3B {r3B}
75: Rule info 3C {r3C}
76: Rule info 3D {r3D}
77: Rule info 3E {r3E}
78: Rule info 3F {r3F}
@COLORS
000: 0
066: 1
9FF: 2
660..060: 2+3..13
990..090: 2+4..14
609..960: 15..78
@TABLE
states: 79
neighborhood: Moore
symmetries: none
z = (0..78)
t0 = (t0s0, t0s1)
t1n0 = (t1s0n0, t1s1n0)
t1n1 = (t1s0n1, t1s1n1)
t1n1d = (t1s0n1d, t1s1n1d)
t1n2 = (t1s0n2, t1s1n2)
t1n2d = (t1s0n2d, t1s1n2d)
t1n3d = (t1s0n3d, t1s1n3d)
t1s0d0 = (t1s0n0, t1s0n1, t1s0n2) # t1s0, diagonal = 0
t1s0d1 = (t1s0n1d, t1s0n2d, t1s0n3d) # t1s0, diagonal = 1
t1s1d0 = (t1s1n0, t1s1n1, t1s1n2) # t1s1, diagonal = 0
t1s1d1 = (t1s1n1d, t1s1n2d, t1s1n3d) # t1s1, diagonal = 1
t1s0 = (t1s0d0, t1s0d1)
t1s1 = (t1s1d0, t1s1d1)
t1d0 = (t1s0d0, t1s1d0)
t1d1 = (t1s0d1, t1s1d1)
t1 = (t1s0, t1s1)
# self west -> southwest southwest
# s0 n0 -> 0 0
# s0 n1 -> 1 1
# s0 n1d -> 0 1
# s0 n2 -> INVALID INVALID
# s0 n2d -> 1 2
# s0 n3d -> INVALID INVALID
# s1 n0 -> INVALID INVALID
# s1 n1 -> 0 0
# s1 n1d -> INVALID INVALID
# s1 n2 -> 0 1
# s1 n2d -> 0 2
# s1 n3d -> 1 2
# West cell is t1u(your current state)n(west+southwest+south)
# OR North cell is t1u(your current state)n(north+northeast+east)
t1u0n0 = (t1s0n0, 0)
t1u0n1 = (t1s1n0, t1s0n1, t1s0n1d)
t1u0n2 = (t1s1n1, t1s1n1d, t1s0n2d)
t1u0n3 = (t1s1n2d)
t1u1n0 = (t1s0n1, 0)
t1u1n1 = (t1s1n1, t1s0n2, t1s0n2d)
t1u1n2 = (t1s1n2, t1s1n2d, t1s0n3d)
t1u1n3 = (t1s1n3d)
nw0 = (t1s0, 0)
nw1 = (t1s1)
t = (t0, t1)
r = (r00, r01, r02, r03, r04, r05, r06, r07, r08, r09, r0A, r0B, r0C, r0D, r0E, r0F, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r1A, r1B, r1C, r1D, r1E, r1F, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r2A, r2B, r2C, r2D, r2E, r2F, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r3A, r3B, r3C, r3D, r3E, r3F)
rB0 = (r20..r3F)
rB1 = (r10..r1F, r30..r3F)
rB2 = (r08..r0F, r18..r1F, r28..r2F, r38..r3F)
rS0 = (8+r04..r3C, 8+r05..r3D, 8+r06..r3E, 8+r07..r3F)
rS1 = (4+r02..r3E, 4+r03..r3F)
rS2 = (2+r01..r3F)
rB3 = (rB0)
rB4 = (rB1)
rB5 = (rB2)
rS3 = (rS0)
rS4 = (rS1)
rS5 = (rS2)
rB6 = (rB0)
rB7 = (rB1)
rB8 = (rB2)
rS6 = (rS0)
rS7 = (rS1)
rS8 = (rS2)
t0, E..S r, SW..NE z; [SE]
t1, N..NW z; [NW]
(r, 0), NW t0, z, NE --t0s1, z, SE --t0s1, z, SW --t0s1, z; [NW:t1n0]
(r, 0), NW (t0, 0), z, NE --t0s1, z, SE --t0s1, z, SW t0s1, z; [NW:(t1n1, t1s0n1)]
(r, 0), NW (t0, 0), z, NE t0s1, z, SE --t0s1, z, SW --t0s1, z; [NW:(t1n1, t1s0n1)]
(r, 0), NW (t0, 0), z, NE --t0s1, z, SE t0s1, z, SW --t0s1, z; [NW:(t1n1d, t1s0n1d)]
(r, 0), NW (t0, 0), z, NE t0s1, z, SE --t0s1, z, SW t0s1, z; [NW:(t1n2, t1s0n2)]
(r, 0), NW (t0, 0), z, NE --t0s1, z, SE t0s1, z, SW t0s1, z; [NW:(t1n2d, t1s0n2d)]
(r, 0), NW (t0, 0), z, NE t0s1, z, SE t0s1, z, SW --t0s1, z; [NW:(t1n2d, t1s0n2d)]
(r, 0), NW (t0, 0), z, NE t0s1, z, SE t0s1, z, SW t0s1, z; [NW:(t1n3d, t1s0n3d)]
# B0
r, E rB0, SE t1s0d0, S r, SW t1u0n0, z, NW nw0, z, NE t1u0n0; t0s1
# S0
r, E rS0, SE t1s1d0, S r, SW t1u1n0, z, NW nw0, z, NE t1u1n0; t0s1
# B1
r, E rB1, SE t1s0d1, S r, SW t1u0n0, z, NW nw0, z, NE t1u0n0; t0s1
r, E rB1, SE t1s0d0, S r, SW t1u0n1, z, NW nw0, z, NE t1u0n0; t0s1
r, E rB1, SE t1s0d0, S r, SW t1u0n0, z, NW nw1, z, NE t1u0n0; t0s1
r, E rB1, SE t1s0d0, S r, SW t1u0n0, z, NW nw0, z, NE t1u0n1; t0s1
# S1
r, E rS1, SE t1s1d1, S r, SW t1u1n0, z, NW nw0, z, NE t1u1n0; t0s1
r, E rS1, SE t1s1d0, S r, SW t1u1n1, z, NW nw0, z, NE t1u1n0; t0s1
r, E rS1, SE t1s1d0, S r, SW t1u1n0, z, NW nw1, z, NE t1u1n0; t0s1
r, E rS1, SE t1s1d0, S r, SW t1u1n0, z, NW nw0, z, NE t1u1n1; t0s1
# B2
r, E rB2, SE t1s0d1, S r, SW t1u0n1, z, NW nw0, z, NE t1u0n0; t0s1
r, E rB2, SE t1s0d1, S r, SW t1u0n0, z, NW nw1, z, NE t1u0n0; t0s1
r, E rB2, SE t1s0d1, S r, SW t1u0n0, z, NW nw0, z, NE t1u0n1; t0s1
r, E rB2, SE t1s0d0, S r, SW t1u0n2, z, NW nw0, z, NE t1u0n0; t0s1
r, E rB2, SE t1s0d0, S r, SW t1u0n1, z, NW nw1, z, NE t1u0n0; t0s1
r, E rB2, SE t1s0d0, S r, SW t1u0n1, z, NW nw0, z, NE t1u0n1; t0s1
r, E rB2, SE t1s0d0, S r, SW t1u0n0, z, NW nw1, z, NE t1u0n1; t0s1
r, E rB2, SE t1s0d0, S r, SW t1u0n0, z, NW nw0, z, NE t1u0n2; t0s1
# S2
r, E rS2, SE t1s1d1, S r, SW t1u1n1, z, NW nw0, z, NE t1u1n0; t0s1
r, E rS2, SE t1s1d1, S r, SW t1u1n0, z, NW nw1, z, NE t1u1n0; t0s1
r, E rS2, SE t1s1d1, S r, SW t1u1n0, z, NW nw0, z, NE t1u1n1; t0s1
r, E rS2, SE t1s1d0, S r, SW t1u1n2, z, NW nw0, z, NE t1u1n0; t0s1
r, E rS2, SE t1s1d0, S r, SW t1u1n1, z, NW nw1, z, NE t1u1n0; t0s1
r, E rS2, SE t1s1d0, S r, SW t1u1n1, z, NW nw0, z, NE t1u1n1; t0s1
r, E rS2, SE t1s1d0, S r, SW t1u1n0, z, NW nw1, z, NE t1u1n1; t0s1
r, E rS2, SE t1s1d0, S r, SW t1u1n0, z, NW nw0, z, NE t1u1n2; t0s1
# B3
rB3, E r, SE t1s0d1, S r, SW t1u0n2, z, NW nw0, z, NE t1u0n0; t0s1
rB3, E r, SE t1s0d1, S r, SW t1u0n1, z, NW nw1, z, NE t1u0n0; t0s1
rB3, E r, SE t1s0d1, S r, SW t1u0n1, z, NW nw0, z, NE t1u0n1; t0s1
rB3, E r, SE t1s0d1, S r, SW t1u0n0, z, NW nw1, z, NE t1u0n1; t0s1
rB3, E r, SE t1s0d1, S r, SW t1u0n0, z, NW nw0, z, NE t1u0n2; t0s1
rB3, E r, SE t1s0d0, S r, SW t1u0n3, z, NW nw0, z, NE t1u0n0; t0s1
rB3, E r, SE t1s0d0, S r, SW t1u0n2, z, NW nw1, z, NE t1u0n0; t0s1
rB3, E r, SE t1s0d0, S r, SW t1u0n2, z, NW nw0, z, NE t1u0n1; t0s1
rB3, E r, SE t1s0d0, S r, SW t1u0n1, z, NW nw1, z, NE t1u0n1; t0s1
rB3, E r, SE t1s0d0, S r, SW t1u0n1, z, NW nw0, z, NE t1u0n2; t0s1
rB3, E r, SE t1s0d0, S r, SW t1u0n0, z, NW nw1, z, NE t1u0n2; t0s1
rB3, E r, SE t1s0d0, S r, SW t1u0n0, z, NW nw0, z, NE t1u0n3; t0s1
# S3
rS3, E r, SE t1s1d1, S r, SW t1u1n2, z, NW nw0, z, NE t1u1n0; t0s1
rS3, E r, SE t1s1d1, S r, SW t1u1n1, z, NW nw1, z, NE t1u1n0; t0s1
rS3, E r, SE t1s1d1, S r, SW t1u1n1, z, NW nw0, z, NE t1u1n1; t0s1
rS3, E r, SE t1s1d1, S r, SW t1u1n0, z, NW nw1, z, NE t1u1n1; t0s1
rS3, E r, SE t1s1d1, S r, SW t1u1n0, z, NW nw0, z, NE t1u1n2; t0s1
rS3, E r, SE t1s1d0, S r, SW t1u1n3, z, NW nw0, z, NE t1u1n0; t0s1
rS3, E r, SE t1s1d0, S r, SW t1u1n2, z, NW nw1, z, NE t1u1n0; t0s1
rS3, E r, SE t1s1d0, S r, SW t1u1n2, z, NW nw0, z, NE t1u1n1; t0s1
rS3, E r, SE t1s1d0, S r, SW t1u1n1, z, NW nw1, z, NE t1u1n1; t0s1
rS3, E r, SE t1s1d0, S r, SW t1u1n1, z, NW nw0, z, NE t1u1n2; t0s1
rS3, E r, SE t1s1d0, S r, SW t1u1n0, z, NW nw1, z, NE t1u1n2; t0s1
rS3, E r, SE t1s1d0, S r, SW t1u1n0, z, NW nw0, z, NE t1u1n3; t0s1
# B4
rB4, E r, SE t1s0d1, S r, SW t1u0n3, z, NW nw0, z, NE t1u0n0; t0s1
rB4, E r, SE t1s0d1, S r, SW t1u0n2, z, NW nw1, z, NE t1u0n0; t0s1
rB4, E r, SE t1s0d1, S r, SW t1u0n2, z, NW nw0, z, NE t1u0n1; t0s1
rB4, E r, SE t1s0d1, S r, SW t1u0n1, z, NW nw1, z, NE t1u0n1; t0s1
rB4, E r, SE t1s0d1, S r, SW t1u0n1, z, NW nw0, z, NE t1u0n2; t0s1
rB4, E r, SE t1s0d1, S r, SW t1u0n0, z, NW nw1, z, NE t1u0n2; t0s1
rB4, E r, SE t1s0d1, S r, SW t1u0n0, z, NW nw0, z, NE t1u0n3; t0s1
rB4, E r, SE t1s0d0, S r, SW t1u0n3, z, NW nw1, z, NE t1u0n0; t0s1
rB4, E r, SE t1s0d0, S r, SW t1u0n3, z, NW nw0, z, NE t1u0n1; t0s1
rB4, E r, SE t1s0d0, S r, SW t1u0n2, z, NW nw1, z, NE t1u0n1; t0s1
rB4, E r, SE t1s0d0, S r, SW t1u0n2, z, NW nw0, z, NE t1u0n2; t0s1
rB4, E r, SE t1s0d0, S r, SW t1u0n1, z, NW nw1, z, NE t1u0n2; t0s1
rB4, E r, SE t1s0d0, S r, SW t1u0n1, z, NW nw0, z, NE t1u0n3; t0s1
rB4, E r, SE t1s0d0, S r, SW t1u0n0, z, NW nw1, z, NE t1u0n3; t0s1
# S4
rS4, E r, SE t1s1d1, S r, SW t1u1n3, z, NW nw0, z, NE t1u1n0; t0s1
rS4, E r, SE t1s1d1, S r, SW t1u1n2, z, NW nw1, z, NE t1u1n0; t0s1
rS4, E r, SE t1s1d1, S r, SW t1u1n2, z, NW nw0, z, NE t1u1n1; t0s1
rS4, E r, SE t1s1d1, S r, SW t1u1n1, z, NW nw1, z, NE t1u1n1; t0s1
rS4, E r, SE t1s1d1, S r, SW t1u1n1, z, NW nw0, z, NE t1u1n2; t0s1
rS4, E r, SE t1s1d1, S r, SW t1u1n0, z, NW nw1, z, NE t1u1n2; t0s1
rS4, E r, SE t1s1d1, S r, SW t1u1n0, z, NW nw0, z, NE t1u1n3; t0s1
rS4, E r, SE t1s1d0, S r, SW t1u1n3, z, NW nw1, z, NE t1u1n0; t0s1
rS4, E r, SE t1s1d0, S r, SW t1u1n3, z, NW nw0, z, NE t1u1n1; t0s1
rS4, E r, SE t1s1d0, S r, SW t1u1n2, z, NW nw1, z, NE t1u1n1; t0s1
rS4, E r, SE t1s1d0, S r, SW t1u1n2, z, NW nw0, z, NE t1u1n2; t0s1
rS4, E r, SE t1s1d0, S r, SW t1u1n1, z, NW nw1, z, NE t1u1n2; t0s1
rS4, E r, SE t1s1d0, S r, SW t1u1n1, z, NW nw0, z, NE t1u1n3; t0s1
rS4, E r, SE t1s1d0, S r, SW t1u1n0, z, NW nw1, z, NE t1u1n3; t0s1
# B5
rB5, E r, SE t1s0d1, S r, SW t1u0n3, z, NW nw1, z, NE t1u0n0; t0s1
rB5, E r, SE t1s0d1, S r, SW t1u0n3, z, NW nw0, z, NE t1u0n1; t0s1
rB5, E r, SE t1s0d1, S r, SW t1u0n2, z, NW nw1, z, NE t1u0n1; t0s1
rB5, E r, SE t1s0d1, S r, SW t1u0n2, z, NW nw0, z, NE t1u0n2; t0s1
rB5, E r, SE t1s0d1, S r, SW t1u0n1, z, NW nw1, z, NE t1u0n2; t0s1
rB5, E r, SE t1s0d1, S r, SW t1u0n1, z, NW nw0, z, NE t1u0n3; t0s1
rB5, E r, SE t1s0d1, S r, SW t1u0n0, z, NW nw1, z, NE t1u0n3; t0s1
rB5, E r, SE t1s0d0, S r, SW t1u0n3, z, NW nw1, z, NE t1u0n1; t0s1
rB5, E r, SE t1s0d0, S r, SW t1u0n3, z, NW nw0, z, NE t1u0n2; t0s1
rB5, E r, SE t1s0d0, S r, SW t1u0n2, z, NW nw1, z, NE t1u0n2; t0s1
rB5, E r, SE t1s0d0, S r, SW t1u0n2, z, NW nw0, z, NE t1u0n3; t0s1
rB5, E r, SE t1s0d0, S r, SW t1u0n1, z, NW nw1, z, NE t1u0n3; t0s1
# S5
rS5, E r, SE t1s1d1, S r, SW t1u1n3, z, NW nw1, z, NE t1u1n0; t0s1
rS5, E r, SE t1s1d1, S r, SW t1u1n3, z, NW nw0, z, NE t1u1n1; t0s1
rS5, E r, SE t1s1d1, S r, SW t1u1n2, z, NW nw1, z, NE t1u1n1; t0s1
rS5, E r, SE t1s1d1, S r, SW t1u1n2, z, NW nw0, z, NE t1u1n2; t0s1
rS5, E r, SE t1s1d1, S r, SW t1u1n1, z, NW nw1, z, NE t1u1n2; t0s1
rS5, E r, SE t1s1d1, S r, SW t1u1n1, z, NW nw0, z, NE t1u1n3; t0s1
rS5, E r, SE t1s1d1, S r, SW t1u1n0, z, NW nw1, z, NE t1u1n3; t0s1
rS5, E r, SE t1s1d0, S r, SW t1u1n3, z, NW nw1, z, NE t1u1n1; t0s1
rS5, E r, SE t1s1d0, S r, SW t1u1n3, z, NW nw0, z, NE t1u1n2; t0s1
rS5, E r, SE t1s1d0, S r, SW t1u1n2, z, NW nw1, z, NE t1u1n2; t0s1
rS5, E r, SE t1s1d0, S r, SW t1u1n2, z, NW nw0, z, NE t1u1n3; t0s1
rS5, E r, SE t1s1d0, S r, SW t1u1n1, z, NW nw1, z, NE t1u1n3; t0s1
# B6
r, E r, SE t1s0d1, S rB6, SW t1u0n3, z, NW nw1, z, NE t1u0n1; t0s1
r, E r, SE t1s0d1, S rB6, SW t1u0n3, z, NW nw0, z, NE t1u0n2; t0s1
r, E r, SE t1s0d1, S rB6, SW t1u0n2, z, NW nw1, z, NE t1u0n2; t0s1
r, E r, SE t1s0d1, S rB6, SW t1u0n2, z, NW nw0, z, NE t1u0n3; t0s1
r, E r, SE t1s0d1, S rB6, SW t1u0n1, z, NW nw1, z, NE t1u0n3; t0s1
r, E r, SE t1s0d0, S rB6, SW t1u0n3, z, NW nw1, z, NE t1u0n2; t0s1
r, E r, SE t1s0d0, S rB6, SW t1u0n3, z, NW nw0, z, NE t1u0n3; t0s1
r, E r, SE t1s0d0, S rB6, SW t1u0n2, z, NW nw1, z, NE t1u0n3; t0s1
# S6
r, E r, SE t1s1d1, S rS6, SW t1u1n3, z, NW nw1, z, NE t1u1n1; t0s1
r, E r, SE t1s1d1, S rS6, SW t1u1n3, z, NW nw0, z, NE t1u1n2; t0s1
r, E r, SE t1s1d1, S rS6, SW t1u1n2, z, NW nw1, z, NE t1u1n2; t0s1
r, E r, SE t1s1d1, S rS6, SW t1u1n2, z, NW nw0, z, NE t1u1n3; t0s1
r, E r, SE t1s1d1, S rS6, SW t1u1n1, z, NW nw1, z, NE t1u1n3; t0s1
r, E r, SE t1s1d0, S rS6, SW t1u1n3, z, NW nw1, z, NE t1u1n2; t0s1
r, E r, SE t1s1d0, S rS6, SW t1u1n3, z, NW nw0, z, NE t1u1n3; t0s1
r, E r, SE t1s1d0, S rS6, SW t1u1n2, z, NW nw1, z, NE t1u1n3; t0s1
# B7
r, E r, SE t1s0d1, S rB7, SW t1u0n3, z, NW nw1, z, NE t1u0n2; t0s1
r, E r, SE t1s0d1, S rB7, SW t1u0n3, z, NW nw0, z, NE t1u0n3; t0s1
r, E r, SE t1s0d1, S rB7, SW t1u0n2, z, NW nw1, z, NE t1u0n3; t0s1
r, E r, SE t1s0d0, S rB7, SW t1u0n3, z, NW nw1, z, NE t1u0n3; t0s1
# S7
r, E r, SE t1s1d1, S rS7, SW t1u1n3, z, NW nw1, z, NE t1u1n2; t0s1
r, E r, SE t1s1d1, S rS7, SW t1u1n3, z, NW nw0, z, NE t1u1n3; t0s1
r, E r, SE t1s1d1, S rS7, SW t1u1n2, z, NW nw1, z, NE t1u1n3; t0s1
r, E r, SE t1s1d0, S rS7, SW t1u1n3, z, NW nw1, z, NE t1u1n3; t0s1
# B8
r, E r, SE t1s0d1, S rB8, SW t1u0n3, z, NW nw1, z, NE t1u0n3; t0s1
# S8
r, E r, SE t1s1d1, S rS8, SW t1u1n3, z, NW nw1, z, NE t1u1n3; t0s1
# Die by default
r, E r, SE t1, S r, SW z, z, NW z, z, NE z; t0s0
Code: Select all
@RULE Meta2x2
********************************
**** COMPILED FROM NUTSHELL ****
**** v0.5.6 ****
********************************
by HactarCE
USAGE:
* B 0 1 2 3 4 5 6 7 8 / S 0 1 2 3 4 5 6 7 8
* |_____|_____|_____| |_____|_____|_____|
* NE SE SW NE SE SW
NE: B012/S012
SE: B345/S345
SW: B678/S678
Encode each as binary number (MSb is leftmost). Add 15, then arrange states
accordingly. Northwest cell is either state 1 or 2 for "dead" or "live"
respectively.
EXAMPLE:
B - - - 3 - - - - - / S - - 2 3 - - - - -
|_____|_____|_____| |_____|_____|_____|
0 4 0 1 4 0
NE = (0<<3) + 1 + 15 = 16
SE = (4<<3) + 4 + 15 = 51
SW = (0<<3) + 0 + 15 = 15
x = 2, y = 2, rule = Meta2x2
AW$pWP!
0: Blank
1: T0 Dead
2: T0 Live
3: T1 Dead 0 N
4: T1 Live 0 N
5: T1 Dead 1 N
6: T1 Live 1 N
7: T1 Dead 1 N D
8: T1 Live 1 N D
9: T1 Dead 2 N
10: T1 Live 2 N
11: T1 Dead 2 N D
12: T1 Live 2 N D
13: T1 Dead 3 N D
14: T1 Live 3 N D
15: Rule info 00
16: Rule info 01
17: Rule info 02
18: Rule info 03
19: Rule info 04
20: Rule info 05
21: Rule info 06
22: Rule info 07
23: Rule info 08
24: Rule info 09
25: Rule info 0A
26: Rule info 0B
27: Rule info 0C
28: Rule info 0D
29: Rule info 0E
30: Rule info 0F
31: Rule info 10
32: Rule info 11
33: Rule info 12
34: Rule info 13
35: Rule info 14
36: Rule info 15
37: Rule info 16
38: Rule info 17
39: Rule info 18
40: Rule info 19
41: Rule info 1A
42: Rule info 1B
43: Rule info 1C
44: Rule info 1D
45: Rule info 1E
46: Rule info 1F
47: Rule info 20
48: Rule info 21
49: Rule info 22
50: Rule info 23
51: Rule info 24
52: Rule info 25
53: Rule info 26
54: Rule info 27
55: Rule info 28
56: Rule info 29
57: Rule info 2A
58: Rule info 2B
59: Rule info 2C
60: Rule info 2D
61: Rule info 2E
62: Rule info 2F
63: Rule info 30
64: Rule info 31
65: Rule info 32
66: Rule info 33
67: Rule info 34
68: Rule info 35
69: Rule info 36
70: Rule info 37
71: Rule info 38
72: Rule info 39
73: Rule info 3A
74: Rule info 3B
75: Rule info 3C
76: Rule info 3D
77: Rule info 3E
78: Rule info 3F
@COLORS
0 0 0 0
1 0 102 102
2 153 255 255
3 102 102 0
5 81 102 0
7 61 102 0
9 40 102 0
11 20 102 0
13 0 102 0
4 153 153 0
6 122 153 0
8 91 153 0
10 61 153 0
12 30 153 0
14 0 153 0
15 102 0 153
16 102 1 150
17 103 3 148
18 104 4 145
19 105 6 143
20 106 8 140
21 106 9 138
22 107 11 136
23 108 12 133
24 109 14 131
25 110 16 128
26 110 17 126
27 111 19 123
28 112 21 121
29 113 22 119
30 114 24 116
31 114 25 114
32 115 27 111
33 116 29 109
34 117 30 106
35 118 32 104
36 119 34 102
37 119 35 99
38 120 37 97
39 121 38 94
40 122 40 92
41 123 42 89
42 123 43 87
43 124 45 85
44 125 46 82
45 126 48 80
46 127 50 77
47 127 51 75
48 128 53 72
49 129 55 70
50 130 56 68
51 131 58 65
52 131 59 63
53 132 61 60
54 133 63 58
55 134 64 55
56 135 66 53
57 136 68 51
58 136 69 48
59 137 71 46
60 138 72 43
61 139 74 41
62 140 76 38
63 140 77 36
64 141 79 34
65 142 80 31
66 143 82 29
67 144 84 26
68 144 85 24
69 145 87 21
70 146 89 19
71 147 90 17
72 148 92 14
73 148 93 12
74 149 95 9
75 150 97 7
76 151 98 4
77 152 100 2
78 153 102 0
@TABLE
neighborhood: Moore
symmetries: none
n_states: 79
var any.0 = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78}
var any.1 = any.0
var any.2 = any.0
var any.3 = any.0
var any.4 = any.0
var any.5 = any.0
var any.6 = any.0
var any.7 = any.0
var t0.0 = {1,2}
var t1s0d0.0 = {9,3,5}
var t1s0d1.0 = {11,13,7}
var t1s1d0.0 = {10,4,6}
var t1s1d1.0 = {8,12,14}
var t1s1.0 = {4,6,8,10,12,14}
var t1.0 = {3,4,5,6,7,8,9,10,11,12,13,14}
var t1u0n0.0 = {0,3}
var t1u0n0.1 = t1u0n0.0
var t1u0n1.0 = {4,5,7}
var t1u0n1.1 = t1u0n1.0
var t1u0n2.0 = {8,11,6}
var t1u0n2.1 = t1u0n2.0
var t1u0n3.0 = {12}
var t1u0n3.1 = t1u0n3.0
var t1u1n0.0 = {0,5}
var t1u1n0.1 = t1u1n0.0
var t1u1n1.0 = {9,11,6}
var t1u1n1.1 = t1u1n1.0
var t1u1n2.0 = {10,12,13}
var t1u1n2.1 = t1u1n2.0
var t1u1n3.0 = {14}
var t1u1n3.1 = t1u1n3.0
var nw0.0 = {0,3,5,7,9,11,13}
var r.0 = {15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78}
var r.1 = r.0
var r.2 = r.0
var rB0.0 = {47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78}
var rB1.0 = {31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78}
var rB2.0 = {23,24,25,26,27,28,29,30,39,40,41,42,43,44,45,46,55,56,57,58,59,60,61,62,71,72,73,74,75,76,77,78}
var rS0.0 = {19,20,21,22,27,28,29,30,35,36,37,38,43,44,45,46,51,52,53,54,59,60,61,62,67,68,69,70,75,76,77,78}
var rS1.0 = {17,18,21,22,25,26,29,30,33,34,37,38,41,42,45,46,49,50,53,54,57,58,61,62,65,66,69,70,73,74,77,78}
var rS2.0 = {16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78}
var _a0.0 = {0,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78}
var _b0.0 = {0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78}
var _b0.1 = _b0.0
var _b0.2 = _b0.0
t0.0, any.0, any.1, r.0, r.1, r.2, any.2, any.3, any.4, r.1
t1.0, any.0, any.1, any.2, any.3, any.4, any.5, any.6, any.7, any.7
_a0.0, any.0, _b0.0, any.1, _b0.1, any.2, _b0.2, any.3, 1, 3
_a0.0, any.0, _b0.0, any.1, _b0.1, any.2, _b0.2, any.3, 2, 4
_a0.0, any.0, _b0.0, any.1, _b0.1, any.2, 2, any.3, 1, 5
_a0.0, any.0, _b0.0, any.1, _b0.1, any.2, 2, any.3, 2, 6
_a0.0, any.0, _b0.0, any.1, _b0.1, any.2, 2, any.3, 0, 5
_a0.0, any.0, 2, any.1, _b0.0, any.2, _b0.1, any.3, 1, 5
_a0.0, any.0, 2, any.1, _b0.0, any.2, _b0.1, any.3, 2, 6
_a0.0, any.0, 2, any.1, _b0.0, any.2, _b0.1, any.3, 0, 5
_a0.0, any.0, _b0.0, any.1, 2, any.2, _b0.1, any.3, 1, 7
_a0.0, any.0, _b0.0, any.1, 2, any.2, _b0.1, any.3, 2, 8
_a0.0, any.0, _b0.0, any.1, 2, any.2, _b0.1, any.3, 0, 7
_a0.0, any.0, 2, any.1, _b0.0, any.2, 2, any.3, 1, 9
_a0.0, any.0, 2, any.1, _b0.0, any.2, 2, any.3, 2, 10
_a0.0, any.0, 2, any.1, _b0.0, any.2, 2, any.3, 0, 9
_a0.0, any.0, _b0.0, any.1, 2, any.2, 2, any.3, 1, 11
_a0.0, any.0, _b0.0, any.1, 2, any.2, 2, any.3, 2, 12
_a0.0, any.0, _b0.0, any.1, 2, any.2, 2, any.3, 0, 11
_a0.0, any.0, 2, any.1, 2, any.2, _b0.0, any.3, 1, 11
_a0.0, any.0, 2, any.1, 2, any.2, _b0.0, any.3, 2, 12
_a0.0, any.0, 2, any.1, 2, any.2, _b0.0, any.3, 0, 11
_a0.0, any.0, 2, any.1, 2, any.2, 2, any.3, 1, 13
_a0.0, any.0, 2, any.1, 2, any.2, 2, any.3, 2, 14
_a0.0, any.0, 2, any.1, 2, any.2, 2, any.3, 0, 13
r.0, any.0, t1u0n0.0, rB0.0, t1s0d0.0, r.1, t1u0n0.1, any.1, nw0.0, 2
r.0, any.0, t1u1n0.0, rS0.0, t1s1d0.0, r.1, t1u1n0.1, any.1, nw0.0, 2
r.0, any.0, t1u0n0.0, rB1.0, t1s0d1.0, r.1, t1u0n0.1, any.1, nw0.0, 2
r.0, any.0, t1u0n0.0, rB1.0, t1s0d0.0, r.1, t1u0n1.0, any.1, nw0.0, 2
r.0, any.0, t1u0n0.0, rB1.0, t1s0d0.0, r.1, t1u0n0.1, any.1, t1s1.0, 2
r.0, any.0, t1u0n1.0, rB1.0, t1s0d0.0, r.1, t1u0n0.0, any.1, nw0.0, 2
r.0, any.0, t1u1n0.0, rS1.0, t1s1d1.0, r.1, t1u1n0.1, any.1, nw0.0, 2
r.0, any.0, t1u1n0.0, rS1.0, t1s1d0.0, r.1, t1u1n1.0, any.1, nw0.0, 2
r.0, any.0, t1u1n0.0, rS1.0, t1s1d0.0, r.1, t1u1n0.1, any.1, t1s1.0, 2
r.0, any.0, t1u1n1.0, rS1.0, t1s1d0.0, r.1, t1u1n0.0, any.1, nw0.0, 2
r.0, any.0, t1u0n0.0, rB2.0, t1s0d1.0, r.1, t1u0n1.0, any.1, nw0.0, 2
r.0, any.0, t1u0n0.0, rB2.0, t1s0d1.0, r.1, t1u0n0.1, any.1, t1s1.0, 2
r.0, any.0, t1u0n1.0, rB2.0, t1s0d1.0, r.1, t1u0n0.0, any.1, nw0.0, 2
r.0, any.0, t1u0n0.0, rB2.0, t1s0d0.0, r.1, t1u0n2.0, any.1, nw0.0, 2
r.0, any.0, t1u0n0.0, rB2.0, t1s0d0.0, r.1, t1u0n1.0, any.1, t1s1.0, 2
r.0, any.0, t1u0n1.0, rB2.0, t1s0d0.0, r.1, t1u0n1.1, any.1, nw0.0, 2
r.0, any.0, t1u0n1.0, rB2.0, t1s0d0.0, r.1, t1u0n0.0, any.1, t1s1.0, 2
r.0, any.0, t1u0n2.0, rB2.0, t1s0d0.0, r.1, t1u0n0.0, any.1, nw0.0, 2
r.0, any.0, t1u1n0.0, rS2.0, t1s1d1.0, r.1, t1u1n1.0, any.1, nw0.0, 2
r.0, any.0, t1u1n0.0, rS2.0, t1s1d1.0, r.1, t1u1n0.1, any.1, t1s1.0, 2
r.0, any.0, t1u1n1.0, rS2.0, t1s1d1.0, r.1, t1u1n0.0, any.1, nw0.0, 2
r.0, any.0, t1u1n0.0, rS2.0, t1s1d0.0, r.1, t1u1n2.0, any.1, nw0.0, 2
r.0, any.0, t1u1n0.0, rS2.0, t1s1d0.0, r.1, t1u1n1.0, any.1, t1s1.0, 2
r.0, any.0, t1u1n1.0, rS2.0, t1s1d0.0, r.1, t1u1n1.1, any.1, nw0.0, 2
r.0, any.0, t1u1n1.0, rS2.0, t1s1d0.0, r.1, t1u1n0.0, any.1, t1s1.0, 2
r.0, any.0, t1u1n2.0, rS2.0, t1s1d0.0, r.1, t1u1n0.0, any.1, nw0.0, 2
rB0.0, any.0, t1u0n0.0, r.0, t1s0d1.0, r.1, t1u0n2.0, any.1, nw0.0, 2
rB0.0, any.0, t1u0n0.0, r.0, t1s0d1.0, r.1, t1u0n1.0, any.1, t1s1.0, 2
rB0.0, any.0, t1u0n1.0, r.0, t1s0d1.0, r.1, t1u0n1.1, any.1, nw0.0, 2
rB0.0, any.0, t1u0n1.0, r.0, t1s0d1.0, r.1, t1u0n0.0, any.1, t1s1.0, 2
rB0.0, any.0, t1u0n2.0, r.0, t1s0d1.0, r.1, t1u0n0.0, any.1, nw0.0, 2
rB0.0, any.0, t1u0n0.0, r.0, t1s0d0.0, r.1, t1u0n3.0, any.1, nw0.0, 2
rB0.0, any.0, t1u0n0.0, r.0, t1s0d0.0, r.1, t1u0n2.0, any.1, t1s1.0, 2
rB0.0, any.0, t1u0n1.0, r.0, t1s0d0.0, r.1, t1u0n2.0, any.1, nw0.0, 2
rB0.0, any.0, t1u0n1.0, r.0, t1s0d0.0, r.1, t1u0n1.1, any.1, t1s1.0, 2
rB0.0, any.0, t1u0n2.0, r.0, t1s0d0.0, r.1, t1u0n1.0, any.1, nw0.0, 2
rB0.0, any.0, t1u0n2.0, r.0, t1s0d0.0, r.1, t1u0n0.0, any.1, t1s1.0, 2
rB0.0, any.0, t1u0n3.0, r.0, t1s0d0.0, r.1, t1u0n0.0, any.1, nw0.0, 2
rS0.0, any.0, t1u1n0.0, r.0, t1s1d1.0, r.1, t1u1n2.0, any.1, nw0.0, 2
rS0.0, any.0, t1u1n0.0, r.0, t1s1d1.0, r.1, t1u1n1.0, any.1, t1s1.0, 2
rS0.0, any.0, t1u1n1.0, r.0, t1s1d1.0, r.1, t1u1n1.1, any.1, nw0.0, 2
rS0.0, any.0, t1u1n1.0, r.0, t1s1d1.0, r.1, t1u1n0.0, any.1, t1s1.0, 2
rS0.0, any.0, t1u1n2.0, r.0, t1s1d1.0, r.1, t1u1n0.0, any.1, nw0.0, 2
rS0.0, any.0, t1u1n0.0, r.0, t1s1d0.0, r.1, t1u1n3.0, any.1, nw0.0, 2
rS0.0, any.0, t1u1n0.0, r.0, t1s1d0.0, r.1, t1u1n2.0, any.1, t1s1.0, 2
rS0.0, any.0, t1u1n1.0, r.0, t1s1d0.0, r.1, t1u1n2.0, any.1, nw0.0, 2
rS0.0, any.0, t1u1n1.0, r.0, t1s1d0.0, r.1, t1u1n1.1, any.1, t1s1.0, 2
rS0.0, any.0, t1u1n2.0, r.0, t1s1d0.0, r.1, t1u1n1.0, any.1, nw0.0, 2
rS0.0, any.0, t1u1n2.0, r.0, t1s1d0.0, r.1, t1u1n0.0, any.1, t1s1.0, 2
rS0.0, any.0, t1u1n3.0, r.0, t1s1d0.0, r.1, t1u1n0.0, any.1, nw0.0, 2
rB1.0, any.0, t1u0n0.0, r.0, t1s0d1.0, r.1, t1u0n3.0, any.1, nw0.0, 2
rB1.0, any.0, t1u0n0.0, r.0, t1s0d1.0, r.1, t1u0n2.0, any.1, t1s1.0, 2
rB1.0, any.0, t1u0n1.0, r.0, t1s0d1.0, r.1, t1u0n2.0, any.1, nw0.0, 2
rB1.0, any.0, t1u0n1.0, r.0, t1s0d1.0, r.1, t1u0n1.1, any.1, t1s1.0, 2
rB1.0, any.0, t1u0n2.0, r.0, t1s0d1.0, r.1, t1u0n1.0, any.1, nw0.0, 2
rB1.0, any.0, t1u0n2.0, r.0, t1s0d1.0, r.1, t1u0n0.0, any.1, t1s1.0, 2
rB1.0, any.0, t1u0n3.0, r.0, t1s0d1.0, r.1, t1u0n0.0, any.1, nw0.0, 2
rB1.0, any.0, t1u0n0.0, r.0, t1s0d0.0, r.1, t1u0n3.0, any.1, t1s1.0, 2
rB1.0, any.0, t1u0n1.0, r.0, t1s0d0.0, r.1, t1u0n3.0, any.1, nw0.0, 2
rB1.0, any.0, t1u0n1.0, r.0, t1s0d0.0, r.1, t1u0n2.0, any.1, t1s1.0, 2
rB1.0, any.0, t1u0n2.0, r.0, t1s0d0.0, r.1, t1u0n2.1, any.1, nw0.0, 2
rB1.0, any.0, t1u0n2.0, r.0, t1s0d0.0, r.1, t1u0n1.0, any.1, t1s1.0, 2
rB1.0, any.0, t1u0n3.0, r.0, t1s0d0.0, r.1, t1u0n1.0, any.1, nw0.0, 2
rB1.0, any.0, t1u0n3.0, r.0, t1s0d0.0, r.1, t1u0n0.0, any.1, t1s1.0, 2
rS1.0, any.0, t1u1n0.0, r.0, t1s1d1.0, r.1, t1u1n3.0, any.1, nw0.0, 2
rS1.0, any.0, t1u1n0.0, r.0, t1s1d1.0, r.1, t1u1n2.0, any.1, t1s1.0, 2
rS1.0, any.0, t1u1n1.0, r.0, t1s1d1.0, r.1, t1u1n2.0, any.1, nw0.0, 2
rS1.0, any.0, t1u1n1.0, r.0, t1s1d1.0, r.1, t1u1n1.1, any.1, t1s1.0, 2
rS1.0, any.0, t1u1n2.0, r.0, t1s1d1.0, r.1, t1u1n1.0, any.1, nw0.0, 2
rS1.0, any.0, t1u1n2.0, r.0, t1s1d1.0, r.1, t1u1n0.0, any.1, t1s1.0, 2
rS1.0, any.0, t1u1n3.0, r.0, t1s1d1.0, r.1, t1u1n0.0, any.1, nw0.0, 2
rS1.0, any.0, t1u1n0.0, r.0, t1s1d0.0, r.1, t1u1n3.0, any.1, t1s1.0, 2
rS1.0, any.0, t1u1n1.0, r.0, t1s1d0.0, r.1, t1u1n3.0, any.1, nw0.0, 2
rS1.0, any.0, t1u1n1.0, r.0, t1s1d0.0, r.1, t1u1n2.0, any.1, t1s1.0, 2
rS1.0, any.0, t1u1n2.0, r.0, t1s1d0.0, r.1, t1u1n2.1, any.1, nw0.0, 2
rS1.0, any.0, t1u1n2.0, r.0, t1s1d0.0, r.1, t1u1n1.0, any.1, t1s1.0, 2
rS1.0, any.0, t1u1n3.0, r.0, t1s1d0.0, r.1, t1u1n1.0, any.1, nw0.0, 2
rS1.0, any.0, t1u1n3.0, r.0, t1s1d0.0, r.1, t1u1n0.0, any.1, t1s1.0, 2
rB2.0, any.0, t1u0n0.0, r.0, t1s0d1.0, r.1, t1u0n3.0, any.1, t1s1.0, 2
rB2.0, any.0, t1u0n1.0, r.0, t1s0d1.0, r.1, t1u0n3.0, any.1, nw0.0, 2
rB2.0, any.0, t1u0n1.0, r.0, t1s0d1.0, r.1, t1u0n2.0, any.1, t1s1.0, 2
rB2.0, any.0, t1u0n2.0, r.0, t1s0d1.0, r.1, t1u0n2.1, any.1, nw0.0, 2
rB2.0, any.0, t1u0n2.0, r.0, t1s0d1.0, r.1, t1u0n1.0, any.1, t1s1.0, 2
rB2.0, any.0, t1u0n3.0, r.0, t1s0d1.0, r.1, t1u0n1.0, any.1, nw0.0, 2
rB2.0, any.0, t1u0n3.0, r.0, t1s0d1.0, r.1, t1u0n0.0, any.1, t1s1.0, 2
rB2.0, any.0, t1u0n1.0, r.0, t1s0d0.0, r.1, t1u0n3.0, any.1, t1s1.0, 2
rB2.0, any.0, t1u0n2.0, r.0, t1s0d0.0, r.1, t1u0n3.0, any.1, nw0.0, 2
rB2.0, any.0, t1u0n2.0, r.0, t1s0d0.0, r.1, t1u0n2.1, any.1, t1s1.0, 2
rB2.0, any.0, t1u0n3.0, r.0, t1s0d0.0, r.1, t1u0n2.0, any.1, nw0.0, 2
rB2.0, any.0, t1u0n3.0, r.0, t1s0d0.0, r.1, t1u0n1.0, any.1, t1s1.0, 2
rS2.0, any.0, t1u1n0.0, r.0, t1s1d1.0, r.1, t1u1n3.0, any.1, t1s1.0, 2
rS2.0, any.0, t1u1n1.0, r.0, t1s1d1.0, r.1, t1u1n3.0, any.1, nw0.0, 2
rS2.0, any.0, t1u1n1.0, r.0, t1s1d1.0, r.1, t1u1n2.0, any.1, t1s1.0, 2
rS2.0, any.0, t1u1n2.0, r.0, t1s1d1.0, r.1, t1u1n2.1, any.1, nw0.0, 2
rS2.0, any.0, t1u1n2.0, r.0, t1s1d1.0, r.1, t1u1n1.0, any.1, t1s1.0, 2
rS2.0, any.0, t1u1n3.0, r.0, t1s1d1.0, r.1, t1u1n1.0, any.1, nw0.0, 2
rS2.0, any.0, t1u1n3.0, r.0, t1s1d1.0, r.1, t1u1n0.0, any.1, t1s1.0, 2
rS2.0, any.0, t1u1n1.0, r.0, t1s1d0.0, r.1, t1u1n3.0, any.1, t1s1.0, 2
rS2.0, any.0, t1u1n2.0, r.0, t1s1d0.0, r.1, t1u1n3.0, any.1, nw0.0, 2
rS2.0, any.0, t1u1n2.0, r.0, t1s1d0.0, r.1, t1u1n2.1, any.1, t1s1.0, 2
rS2.0, any.0, t1u1n3.0, r.0, t1s1d0.0, r.1, t1u1n2.0, any.1, nw0.0, 2
rS2.0, any.0, t1u1n3.0, r.0, t1s1d0.0, r.1, t1u1n1.0, any.1, t1s1.0, 2
r.0, any.0, t1u0n1.0, r.1, t1s0d1.0, rB0.0, t1u0n3.0, any.1, t1s1.0, 2
r.0, any.0, t1u0n2.0, r.1, t1s0d1.0, rB0.0, t1u0n3.0, any.1, nw0.0, 2
r.0, any.0, t1u0n2.0, r.1, t1s0d1.0, rB0.0, t1u0n2.1, any.1, t1s1.0, 2
r.0, any.0, t1u0n3.0, r.1, t1s0d1.0, rB0.0, t1u0n2.0, any.1, nw0.0, 2
r.0, any.0, t1u0n3.0, r.1, t1s0d1.0, rB0.0, t1u0n1.0, any.1, t1s1.0, 2
r.0, any.0, t1u0n2.0, r.1, t1s0d0.0, rB0.0, t1u0n3.0, any.1, t1s1.0, 2
r.0, any.0, t1u0n3.0, r.1, t1s0d0.0, rB0.0, t1u0n3.1, any.1, nw0.0, 2
r.0, any.0, t1u0n3.0, r.1, t1s0d0.0, rB0.0, t1u0n2.0, any.1, t1s1.0, 2
r.0, any.0, t1u1n1.0, r.1, t1s1d1.0, rS0.0, t1u1n3.0, any.1, t1s1.0, 2
r.0, any.0, t1u1n2.0, r.1, t1s1d1.0, rS0.0, t1u1n3.0, any.1, nw0.0, 2
r.0, any.0, t1u1n2.0, r.1, t1s1d1.0, rS0.0, t1u1n2.1, any.1, t1s1.0, 2
r.0, any.0, t1u1n3.0, r.1, t1s1d1.0, rS0.0, t1u1n2.0, any.1, nw0.0, 2
r.0, any.0, t1u1n3.0, r.1, t1s1d1.0, rS0.0, t1u1n1.0, any.1, t1s1.0, 2
r.0, any.0, t1u1n2.0, r.1, t1s1d0.0, rS0.0, t1u1n3.0, any.1, t1s1.0, 2
r.0, any.0, t1u1n3.0, r.1, t1s1d0.0, rS0.0, t1u1n3.1, any.1, nw0.0, 2
r.0, any.0, t1u1n3.0, r.1, t1s1d0.0, rS0.0, t1u1n2.0, any.1, t1s1.0, 2
r.0, any.0, t1u0n2.0, r.1, t1s0d1.0, rB1.0, t1u0n3.0, any.1, t1s1.0, 2
r.0, any.0, t1u0n3.0, r.1, t1s0d1.0, rB1.0, t1u0n3.1, any.1, nw0.0, 2
r.0, any.0, t1u0n3.0, r.1, t1s0d1.0, rB1.0, t1u0n2.0, any.1, t1s1.0, 2
r.0, any.0, t1u0n3.0, r.1, t1s0d0.0, rB1.0, t1u0n3.1, any.1, t1s1.0, 2
r.0, any.0, t1u1n2.0, r.1, t1s1d1.0, rS1.0, t1u1n3.0, any.1, t1s1.0, 2
r.0, any.0, t1u1n3.0, r.1, t1s1d1.0, rS1.0, t1u1n3.1, any.1, nw0.0, 2
r.0, any.0, t1u1n3.0, r.1, t1s1d1.0, rS1.0, t1u1n2.0, any.1, t1s1.0, 2
r.0, any.0, t1u1n3.0, r.1, t1s1d0.0, rS1.0, t1u1n3.1, any.1, t1s1.0, 2
r.0, any.0, t1u0n3.0, r.1, t1s0d1.0, rB2.0, t1u0n3.1, any.1, t1s1.0, 2
r.0, any.0, t1u1n3.0, r.1, t1s1d1.0, rS2.0, t1u1n3.1, any.1, t1s1.0, 2
r.0, any.0, any.1, r.1, t1.0, r.2, any.2, any.3, any.4, 1
Code: Select all
x = 32, y = 32, rule = Meta2x2
APAPAPAPAPAPAPAPAPAPAPAPAPAPAPAP$OqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqC
OqCOqCOqCOqC$APAPAPAPAPAPAPAPAPAPBPBPBPBPAPAP$OqCOqCOqCOqCOqCOqCOqCOqC
OqCOqCOqCOqCOqCOqCOqCOqC$APAPAPAPAPAPAPAPAPAPBPAPAPAPBPAP$OqCOqCOqCOqC
OqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqC$APAPAPAPAPAPAPAPAPAPBPAPAPAPAPAP
$OqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqC$APAPAPAPAPAPAPAPAPA
PAPBPAPAPAPAP$OqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqC$APAPAP
APAPAPAPAPAPAPAPAPAPAPAPAP$OqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqC
OqCOqC$APAPAPAPAPAPAPAPAPAPAPAPAPAPAPAP$OqCOqCOqCOqCOqCOqCOqCOqCOqCOqC
OqCOqCOqCOqCOqCOqC$APAPAPAPAPAPAPAPAPAPAPAPAPAPAPAP$OqCOqCOqCOqCOqCOqC
OqCOqCOqCOqCOqCOqCOqCOqCOqCOqC$APAPAPAPAPAPAPAPAPAPAPAPAPAPAPAP$OqCOqC
OqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqC$APAPAPAPAPAPAPAPAPAPAPAPAP
APAPAP$OqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqC$APAPAPAPAPAPA
PAPAPAPAPAPAPAPAPAP$OqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqC$
APAPAPAPAPAPAPAPAPAPAPAPAPAPAPAP$OqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqC
OqCOqCOqCOqC$APAPAPAPAPAPAPAPAPAPAPAPAPAPAPAP$OqCOqCOqCOqCOqCOqCOqCOqC
OqCOqCOqCOqCOqCOqCOqCOqC$APBPBPBPAPAPAPAPAPAPAPAPBPBPBPAP$OqCOqCOqCOqC
OqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqC$APAPAPBPAPAPAPAPAPAPAPAPAPAPAPAP
$OqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqC$APAPBPAPAPAPAPAPAPA
PAPAPAPAPAPAP$OqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqCOqC!
Code: Select all
#!/usr/bin/env python3
from clipboard import copy, paste
# x = 16, y = 16, rule = Life
# $10b4o$10bo3bo$10bo$11bo9$b3o8b3o$3bo$2bo!
RULE_STATES = (list('OPQRSTUVWX')
+ [f'p{c}' for c in 'ABCDEFGHIJKLMNOPQRSTUVWX']
+ [f'q{c}' for c in 'ABCDEFGHIJKLMNOPQRSTUVWX']
+ [f'r{c}' for c in 'ABCDEF'])
def get_rule_state(*bools):
i = 0
print(bools)
for b in bools:
i *= 2
i += b
print(i)
return RULE_STATES[i]
rle = paste()
lines = rle.splitlines()
info_str, rle_data = lines[0], ''.join(lines[1:])
info = {}
for entry in info_str.split(','):
k, v = map(str.strip, entry.split('='))
if v == 'Life':
v = 'B3/S23'
try:
v = int(v)
except:
pass
info[k] = v
cells = [[False] * info['x'] for _ in range(info['y'])]
x, y = 0, 0
count = 0
for c in rle_data:
if c.isdigit():
count *= 10
count += int(c)
elif c == '$':
y += count or 1
x = 0
count = 0
elif c != '!':
state = c == 'o'
for _ in range(count or 1):
cells[y][x] = state
x += 1
count = 0
rule_cells = []
birth, survival = info['rule'].split('/')
rb = lambda c: c in birth
rs = lambda c: c in survival
rule_cells.append(get_rule_state(rb('0'), rb('1'), rb('2'), rs('0'), rs('1'), rs('2')))
rule_cells.append(get_rule_state(rb('3'), rb('4'), rb('5'), rs('3'), rs('4'), rs('5')))
rule_cells.append(get_rule_state(rb('6'), rb('7'), rb('8'), rs('6'), rs('7'), rs('8')))
new_rle = f'x = {info["x"] * 2}, y = {info["y"] * 2}, rule = Meta2x2\n'
for row in cells:
for cell in row:
new_rle += 'AB'[cell]
new_rle += rule_cells[0]
new_rle += '$'
new_rle += ''.join(rule_cells[:0:-1]) * info['x']
new_rle += '$'
new_rle = new_rle[:-1] + '!\n'
print(new_rle)
copy(new_rle)
So how does this work? First, a breakdown of those 79 states:
State 0 is just included to handle edges nicely. States 1-14 encode the current state of the metacell (dead or live), the tick (0 or 1), and information about the south, southeast, and east neighbors. Each 2x2 metacell has exactly one cell with one of these states; during the first tick it's in the NW corner, and during the second tick it's in the SE corner.
1 - T0 Dead
2 - T0 Live
3 - T1 Dead 0N
4 - T1 Live 0N
5 - T1 Dead 1N
6 - T1 Live 1N
7 - T1 Dead 1N D
8 - T1 Live 1N D
9 - T1 Dead 2N
10 - T1 Live 2N
11 - T1 Dead 2N D
12 - T1 Live 2N D
13 - T1 Dead 3N D
14 - T1 Live 3N D
Tx = tick x
xN = x neighbors are alive (counting only S, SE, and E)
D = diagonal neighbor (i.e. SE) is alive
Then there's states 15-79, which each encode 6 bits of the 18-bit rulestring. Each metacell has three of these cells. The two in the NE and SW corners don't move, but the third one oscillates between NW and SE depending on where the 1-14 cell is. The rulestring encoding isn't that important, but if you're curious, it's explained in the ruletable file below.
The first tick is fairly straightforward. A metacell looks at its south, southeast, and east neighbors to determine the next state. It encodes two things: how many of those three neighbors (S, SE, E) are alive, and whether the SE one is alive.
yellow = metacell boundary
greenish arrow = this metacell state
orange arrows = neighboring metacell states
The second tick is where it gets complicated. The NW cell of each metacell needs to deduce the number of live neighbors based on just the information from itself and the west, northwest, and north metacells, and THEN based on the three state-15-to-79 cells, figure out what state it should assume next according to the preprogrammed rule.
yellow = metacell boundary
greenish arrow = this metacell state (and SE metacell state)
magenta arrows = information transfer from previous transition
orange arrows = neighboring metacell states
Based on the information transfer shown in the picture above, and using states 3-14 described earlier, it is in fact possible to reconstruct the full neighbor count (and even configuration, though that isn't used in this rule) for a given metacell.
Let me know if you find any mistakes I've made or have any other questions/comments.
EDIT 2020-10-12: Fix GIF links by moving them to Imgur