Wireworld5
Posted: February 4th, 2021, 10:22 am
The biggest challenge in circuitry rules is preventing signals from flowing backwards. One way to solve this is in JvN29, where wires are directed. This is unsatisfying because it removes lots of symmetry, and makes rotating patterns harder. Another way is to have signal tails, as in Wireworld and NTAA. This sets a limit to how tightly signals can pack. Wireworld solves this problem by forcing you to use a base period, while NTAA removes the need to care about timing, which makes async crossovers impossible. Both of these resolutions are still not completely satisfactory. Therefore, I have created a new circuitry rule using five wire types, which solves the signal backflow problem by only allowing signals to travel between certain wire types.
Gates:
Wire, OR, XOR, NOT, AND, ANDNOT, change color, change timing, crossover.
Have fun!
Code: Select all
@NUTSHELL Wireworld5
A variant of Wireworld using five wire types, eliminating the need for tail cells and diodes.
@TABLE
symmetries: permute
(1,6),(9,10),any,--(9,10)~6;6
(2,7),(6,10),any,--(6,10)~6;7
(3,8),(6,7),any,--(6,7)~6;8
(4,9),(7,8),any,--(7,8)~6;9
(5,10),(8,9),any,--(8,9)~6;10
(6..10),any;[0:(1..5)]
@COLORS
333:0
F00:1
CF0:2
0F6:3
06F:4
C0F:5
F88:6
EF8:7
8FB:8
8BF:9
E8F:10
Code: Select all
@RULE Wireworld5
********************************
**** COMPILED FROM NUTSHELL ****
**** v0.6.3 ****
********************************
A variant of Wireworld using five wire types, eliminating the need for tail cells and diodes.
@TABLE
neighborhood: Moore
symmetries: permute
n_states: 11
var any.0 = {0,1,2,3,4,5,6,7,8,9,10}
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 _a0.0 = {1,6}
var _b0.0 = {9,10}
var _c0.0 = {0,1,2,3,4,5,6,7,8}
var _c0.1 = _c0.0
var _c0.2 = _c0.0
var _c0.3 = _c0.0
var _c0.4 = _c0.0
var _c0.5 = _c0.0
var _d0.0 = {2,7}
var _e0.0 = {10,6}
var _f0.0 = {0,1,2,3,4,5,7,8,9}
var _f0.1 = _f0.0
var _f0.2 = _f0.0
var _f0.3 = _f0.0
var _f0.4 = _f0.0
var _f0.5 = _f0.0
var _g0.0 = {8,3}
var _h0.0 = {6,7}
var _i0.0 = {0,1,2,3,4,5,8,9,10}
var _i0.1 = _i0.0
var _i0.2 = _i0.0
var _i0.3 = _i0.0
var _i0.4 = _i0.0
var _i0.5 = _i0.0
var _j0.0 = {9,4}
var _k0.0 = {8,7}
var _l0.0 = {0,1,2,3,4,5,6,9,10}
var _l0.1 = _l0.0
var _l0.2 = _l0.0
var _l0.3 = _l0.0
var _l0.4 = _l0.0
var _l0.5 = _l0.0
var _m0.0 = {10,5}
var _n0.0 = {8,9}
var _o0.0 = {0,1,2,3,4,5,6,7,10}
var _o0.1 = _o0.0
var _o0.2 = _o0.0
var _o0.3 = _o0.0
var _o0.4 = _o0.0
var _o0.5 = _o0.0
_a0.0, _b0.0, any.0, _c0.0, _c0.1, _c0.2, _c0.3, _c0.4, _c0.5, 6
_d0.0, _e0.0, any.0, _f0.0, _f0.1, _f0.2, _f0.3, _f0.4, _f0.5, 7
_g0.0, _h0.0, any.0, _i0.0, _i0.1, _i0.2, _i0.3, _i0.4, _i0.5, 8
_j0.0, _k0.0, any.0, _l0.0, _l0.1, _l0.2, _l0.3, _l0.4, _l0.5, 9
_m0.0, _n0.0, any.0, _o0.0, _o0.1, _o0.2, _o0.3, _o0.4, _o0.5, 10
6, any.0, any.1, any.2, any.3, any.4, any.5, any.6, any.7, 1
7, any.0, any.1, any.2, any.3, any.4, any.5, any.6, any.7, 2
8, any.0, any.1, any.2, any.3, any.4, any.5, any.6, any.7, 3
9, any.0, any.1, any.2, any.3, any.4, any.5, any.6, any.7, 4
10, any.0, any.1, any.2, any.3, any.4, any.5, any.6, any.7, 5
@COLORS
0 51 51 51
1 255 128 0
2 215 108 0
3 175 88 0
4 155 78 0
5 135 68 0
6 255 255 255
7 215 215 215
8 175 175 175
9 155 155 155
10 135 135 135
Code: Select all
x = 15, y = 50, rule = Wireworld5
ABCDEABCDEABCDE3$ABCDE$5.ABCDEABCDE$ABCDE3$ABCDEA$5.ABCDEABCDE$ABCDEA
3$ABCDEA$5.AGHIJFGHIJ$4.HF$4.J3$4.J$4.HF2.F$5.AG.HJ$ABCDEA.H.JABCDE$
8.IJ$ABCDEA.H$5.AG$4.HF$4.J3$ABCDE$5.AB$ABCDE.BCDEABCDE$5.AB3$ABCDEAB
CDABCDEA3$ABCDE4.EABCDE$5.B2.D$5.D.C$6.A3$6.BC$ABCDEA.CDEABCDE$5.ABC$
ABCDEA.CDEABCDE$6.BC!
Have fun!