Wireworld JvN
Posted: May 31st, 2013, 3:43 pm
I decided to modify normal wireworld to work in a JvN neighborhood. Initially, I kept all the rules otherwise the same:
(I have this saved as "WireWorldJvN.table")
Unfortunately, it was somewhat harder to construct logic gates in this rule. In normal wireworld, many logic components work by exploiting the fact that three adjacent heads can prevent a new head from forming without forming one themselves. In a Von Neumann neighborhood, though, getting three heads around a particular cell can be tricky. However, we can modify to rule to specify that a new head is formed only if the cell in question was adjacent to exactly one head in the previous generation. This results in the following rule table (I have it saved as "WireWorldJvN2.table")
This rule is surprisingly easy to work with. For example, here is an XOR gate:
And here is an OR gate:
And a NOT gate:
Inspired by the p6 memory cell in golly's wireworld folder, here is a period 4 switchable memory cell in wireworldjvn2:
Just with those patterns alone, we have enough components for (weakly) universal computation. Now, some questions:
1. Can anyone find an AND gate which is smaller than forming one from ORs and NOTs?
2. Can anyone find a crossover smaller than three XOR gates (something akin to this:)?
3. Can we find non-synchronized logic gates?
Code: Select all
# WireWorld JvN
#
# rules: 6
#
# Golly rule-table format.
# Each rule: C,U,R,D,L,C'
#
# Default for transitions not listed: no change
#
# Variables are bound within each transition.
# For example, if a={1,2} then 4,a,0->a represents
# two transitions: 4,1,0->1 and 4,2,0->2
# (This is why we need to repeat the variables below.
# In this case the method isn't really helping.)
#
n_states:4
neighborhood:vonNeumann
symmetries:permute
var a={0,1,2,3}
var b={0,1,2,3}
var c={0,1,2,3}
var d={0,1,2,3}
var e={0,2,3}
var f={0,2,3}
var g={0,2,3}
var h={0,2,3}
1,a,b,c,d,2
2,a,b,c,d,3
3,e,f,g,1,1
3,e,f,1,1,1
3,e,1,f,1,1
3,1,e,f,1,1Unfortunately, it was somewhat harder to construct logic gates in this rule. In normal wireworld, many logic components work by exploiting the fact that three adjacent heads can prevent a new head from forming without forming one themselves. In a Von Neumann neighborhood, though, getting three heads around a particular cell can be tricky. However, we can modify to rule to specify that a new head is formed only if the cell in question was adjacent to exactly one head in the previous generation. This results in the following rule table (I have it saved as "WireWorldJvN2.table")
Code: Select all
# WireWorld JvN
#
# rules: 6
#
# Golly rule-table format.
# Each rule: C,U,R,D,L,C'
#
# Default for transitions not listed: no change
#
# Variables are bound within each transition.
# For example, if a={1,2} then 4,a,0->a represents
# two transitions: 4,1,0->1 and 4,2,0->2
# (This is why we need to repeat the variables below.
# In this case the method isn't really helping.)
#
n_states:4
neighborhood:vonNeumann
symmetries:permute
var a={0,1,2,3}
var b={0,1,2,3}
var c={0,1,2,3}
var d={0,1,2,3}
var e={0,2,3}
var f={0,2,3}
var g={0,2,3}
var h={0,2,3}
1,a,b,c,d,2
2,a,b,c,d,3
3,e,f,g,1,1
Code: Select all
x = 23, y = 29, rule = wireworldjvn2
14.C$14.C$14.C$14.C$14.C$14.C$14.C$14.C$14.C$14.C$14.C$14.C$14.C$14.C
$14.C$13.3C$CBA11C.3CAB3C$C.C10.3C2.C3.C$3C11.C3.C3.C$18.C3.C$18.C3.C
$18.C3.C$18.C3.C$18.C3.C$18.C3.C$18.C3.C$18.C3.C$18.C3.C$18.5C!
Code: Select all
x = 32, y = 36, rule = wireworldjvn2
14.4C$5CBA9C.7CAB6C$C6.C7.C8.C6.C$8C7.C8.8C$15.C$15.C$15.C$15.C$15.C
6$14.4C$5CBA9C.15C$C6.C7.C8.C6.C$8C7.C8.8C$15.C$15.C$15.C$15.C$15.C5$
14.4C$16C.7CAB6C$C6.C7.C8.C6.C$8C7.C8.8C$15.C$15.C$15.C$15.C$15.C!
Code: Select all
x = 20, y = 81, rule = wireworldjvn2
5CBA5C$C5.C3.7CABC$C5.C4.C5.C.C$C5.C4.C5.3C$C5.C4.C$C5.C4.C$7C4.C$11.
C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$
11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C
$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.
C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$
11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C$11.C
$11.C$11.C$11.C$11.C$11.C!
Code: Select all
x = 86, y = 11, rule = wireworldjvn2
15CBA34CBA20CBA10CB$83.2CA$83.B.C$83.A2C$84.C$84.B$84.A$84.C$84.C$84.
B$84.A!
1. Can anyone find an AND gate which is smaller than forming one from ORs and NOTs?
2. Can anyone find a crossover smaller than three XOR gates (something akin to this:
Code: Select all
x = 11, y = 21, rule = wireworld
2.8C$.C8.C$.C8.C$.C8.C$.C8.C$.C8.C$.C8.C$.C8.C$.C.C6.C$10C$C2.C$10C$.
C.C6.C$.C8.C$.C8.C$.A8.C$.B8.C$.C8.C$.C8.C$.C8.C$2.8C!
3. Can we find non-synchronized logic gates?