-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTetrazine.ruel
119 lines (97 loc) · 3.19 KB
/
Tetrazine.ruel
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
@NUTSHELL Tetrazine
Tetrazine is a rule I devised that is a 'fusion' of many different wire-like rules. It steals properties from:
* Wireworld++ => tiny AND/XOR gates
* NoTimeAtAll => stagnating signals
* DECA => tiny AND/ANDNOT gates
States:
0: {Background} background
1: {StrongHead} strong head
2: {StrongTail} strong tail
3: {StrongWire} strong wire
4: {WeakHead} weak head
5: {WeakTail} weak tail
6: {WeakWire} weak wire
7: {NTAAHead1} NTAA head 1
8: {NTAAHead0} NTAA head 0
9: {NTAATail} NTAA tail
10: {NTAAWire} NTAA wire
11: {DECA1} DECA blocker head 1
12: {DECA0} DECA blocker head 0
@TABLE
neighborhood: Moore
anyNTAAHead = (NTAAHead0, NTAAHead1)
anyhead = (StrongHead, WeakHead, anyNTAAHead)
WWTail = (WeakTail, StrongTail)
anyWW = (anyhead, WeakWire, StrongWire)
anyNTAA = (anyNTAAHead, NTAATail, NTAAWire)
# --------------DECA---------------
symmetries: rotate4reflect
# blocked by adjacent DECA head1
(WeakWire, StrongWire), N Background, E (WeakWire, StrongWire), S DECA1, W anyhead; [0]
# toggle when lone head next to
(DECA0, DECA1), NW --anyWW, N (anyhead, NTAATail, StrongTail), NE --anyWW; [0: (DECA1, DECA0)]
# --------------NTAA--------------
# 0: blank
# 1: wire {w}
# 2: wire 0 {h0}
# 3: wire 1 {h1}
# 4: tail {t}
# h = (h0, h1)
# ht = (h, t)
# wht = (w, ht)
# wt = (w, t)
symmetries: nutshell.AlternatingPermute
# NEVER put a head where there would be an adjacent tail
# w, t, any ~ 3; w
NTAAWire, NTAATail, any ~ 4, any ~ 3; NTAAWire
symmetries: rotate4reflect
# Split at T
# w, w, h, w, --wht; [2]
NTAAWire, N NTAAWire, E anyNTAAHead, S NTAAWire, W --anyNTAA; [E]
symmetries: nutshell.AlternatingPermute
# Signals wait at intersections
# w, w ~ 2, any ~ 2; w
NTAAWire, NTAAWire ~ 2, any ~ 4, any ~ 2; NTAAWire
# Sum=1 signal combination
# w, h1, h1, any ~ 2; h0
NTAAWire, NTAAHead1 ~ 2, any ~ 4, any ~ 2; NTAAHead0
# w, h, h0, --h1 ~ 2; [1]
NTAAWire, anyNTAAHead, any ~ 2, NTAAHead0, any ~ 2, --NTAAHead1 ~ 2; [1]
# Signals
# w, h, --h ~ 3; [1]
NTAAWire, anyNTAAHead, any ~ 2, --anyNTAAHead ~ 3, any ~ 2; [1]
# h, --w ~ 4; t
anyNTAAHead, --NTAAWire ~ 4, any ~ 4; NTAATail
# t, --h ~ 4; w
NTAATail, --anyNTAAHead ~ 4, any ~ 4; NTAAWire
# -----------------Wireworld++-----------------
symmetries: permute
# prevent backfiring when transitioning into NTAA wire
(StrongTail, WeakTail), NTAAHead1 ~ 1, any ~ 7; [0]
# wireworld heads go immediately to tail
(StrongHead, StrongTail), any; [0: (StrongTail, StrongWire)]
(WeakHead, WeakTail), any; [0: (WeakTail, WeakWire)]
# wireworld++ transitions
StrongWire, <12 / (StrongHead, NTAAHead1) / any - (StrongHead, NTAAHead1)>; StrongHead
StrongWire, <2 / (WeakHead, NTAAHead1) / any - (WeakHead, NTAAHead1)>; StrongHead
WeakWire, <12 / (WeakHead, NTAAHead1) / any - (WeakHead, NTAAHead1)>; WeakHead
WeakWire, <1 / (StrongHead, NTAAHead1) / any - (StrongHead, NTAAHead1)>; WeakHead
# ---------------some crossover------------
# activate when Wireworld++heads
symmetries: permute
NTAAWire, (anyhead - anyNTAA) ~ 2, any; NTAAHead1
NTAAWire, (anyhead - anyNTAA) ~ 1, any; NTAAHead0
@COLORS
000: Background
090: StrongHead
060: StrongTail
030: StrongWire
990: WeakHead
660: WeakTail
003: WeakWire
099: NTAAHead1
033: NTAAHead0
600: NTAATail
300: NTAAWire
333: DECA0
999: DECA1