Wireworld5

For discussion of other cellular automata.
Post Reply
User avatar
EvinZL
Posts: 854
Joined: November 8th, 2018, 4:15 pm
Location: A tungsten pool travelling towards the sun
Contact:

Wireworld5

Post by EvinZL » 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.

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
Gates:

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!
Wire, OR, XOR, NOT, AND, ANDNOT, change color, change timing, crossover.

Have fun!
Last edited by EvinZL on February 5th, 2021, 10:24 am, edited 1 time in total.

User avatar
EvinZL
Posts: 854
Joined: November 8th, 2018, 4:15 pm
Location: A tungsten pool travelling towards the sun
Contact:

Re: Wireworld5

Post by EvinZL » February 4th, 2021, 10:43 am

W110

Code: Select all

x = 29, y = 13, rule = Wireworld5
9.F4.F$5.H2.I.H2.I.H$5.FI.G2.I.G2.I2.I$6.DJ4.J4.J.FH$3.ABCD.F4.F4.F.H
D.AB$.CD6.G4.GHIJ.GH.E.BCDE$F.D7.HIJF9.AB3.B$E2.EA17.E5.C$D3.B.ACEABC
DEABCDEABD6.D$C4.D22.E$B27.A$A27.B$.EDCBAEDCBAEDCBAEDCBAEDCBAED!

Yoel
Posts: 396
Joined: July 2nd, 2020, 1:02 am
Location: Electronic jungle
Contact:

Re: Wireworld5

Post by Yoel » February 4th, 2021, 5:22 pm

EvinZL wrote:
February 4th, 2021, 10:22 am
This sets a limit to how tightly signals can pack. Wireworld solves this problem by forcing you to use a base period
A practical question: if you want to build a display of sorts, how would you present it with all the colors? For example. It's hard for me to see what's going on in your W110 "rosary". I would personally think that a set of similar hues for wires and similar hues for signals would look better in terms of visibility.

User avatar
HactarCE
Posts: 8
Joined: March 16th, 2019, 4:41 pm

Re: Wireworld5

Post by HactarCE » February 5th, 2021, 3:38 am

I love the concept! I wonder how you arrived on five as the requisite number of states; is four not enough?

I agree with Yoel that the colors are a bit hard to see; here is an alternate @COLORS section that I find easier to work with, featuring a gradient from light to dark orange for "off" wires and light to dark grey for "on" wires:

Code: Select all

@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
These can be approximated using 3-digit hex codes in Nutshell if you so choose.


EvinZL wrote:
February 4th, 2021, 10:22 am
[...] 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.
Note that both of these symptoms are Golly-specific. JvN (sans construction) is perfectly symmetrical under 90-degree rotations and reflection if cell state substitutions are allowed. Support for symmetry with cell state substitutions could theoretically be added to Golly, and I plan to eventually add support in NDCell.

User avatar
EvinZL
Posts: 854
Joined: November 8th, 2018, 4:15 pm
Location: A tungsten pool travelling towards the sun
Contact:

Re: Wireworld5

Post by EvinZL » February 5th, 2021, 5:17 pm

HactarCE wrote: I love the concept! I wonder how you arrived on five as the requisite number of states; is four not enough?
Four states are enough, if you're willing to sacrifice symmetry
HactarCE wrote: I agree with Yoel that the colors are a bit hard to see; here is an alternate @COLORS section that I find easier to work with, featuring a gradient from light to dark orange for "off" wires and light to dark grey for "on" wires:

Code: Select all

...
For me, the old problem was it was hard to tell the difference between wire and signal (especially states 2 and 7), and was thinking about making new colors. With this new color set, sometimes its hard to tell the difference between states 4 and 5.

Improved W110 rosary

Code: Select all

x = 29, y = 12, rule = Wireworld5
5.H$5.FI3.J$6.DJF.HF2.AB$3.ABCD.GH.FCE.BDE$.CD6.IJF2.AB2.ABCDEABCDE$F
.DEA8.E14.B$E3.B.ACEABCD15.C$D4.D22.D$C27.E$B27.A$A27.B$.EDCBAEDCBAED
CBAEDCBAEDCBAED!

ColorfulGabrielsp138
Posts: 288
Joined: March 29th, 2021, 5:45 am

Re: Wireworld5

Post by ColorfulGabrielsp138 » August 10th, 2021, 6:41 am

Wireworld isn't omniperiodic due to lack of p2, but Wireworld5 is indeed omniperiodic.

Code: Select all

x = 7, y = 11, rule = Wireworld5
.F$B.D$.H2$.FDCGA$B5.D$.CIABH2$.FDCBF$B5.D$.CDFBC!

Code: Select all

x = 21, y = 21, rule = LifeColorful
11.E$10.3E$10.E.2E$13.E4$2.2B$.2B$2B$.2B15.2D$19.2D$18.2D$17.2D4$7.C$
7.2C.C$8.3C$9.C!
I have reduced the glider cost of quadratic growth to eight and probably to seven. Looking for conduits...

User avatar
Freywa
Posts: 877
Joined: June 23rd, 2011, 3:20 am
Location: Singapore
Contact:

Re: Wireworld5

Post by Freywa » September 2nd, 2021, 6:27 am

While I was busy playing with my fewer-state, richer and crazily scrunchier rule Trine, I noticed that the crossover can lose a column:

Code: Select all

x = 27, y = 6, rule = Wireworld5
.C$G.D5.B$.F.FBCDABCDABCDABCDABCDABCD$7.AB$2.DFBCDABCDABCDABCDABCDABC
D$2.C5.B!
However the rule proposed in this thread does not support p1 memory cells, a feature I realised was necessary for asynchronous logic while making Trine.
Princess of Science, Parcly Taxel

Code: Select all

x = 31, y = 5, rule = B2-a/S12
3bo23bo$2obo4bo13bo4bob2o$3bo4bo13bo4bo$2bo4bobo11bobo4bo$2bo25bo!

Post Reply