Rule:WWEJ2
@RULE WWEJ2
- Mark Jeronimus's WireWorld Extendable (WWEJ2) in Golly rule-table format.
- Version 2.2
- Based on WireWorld. Universally extendable, using just 11 states.
- Although inspired by, it is not based on Alan Tennant's WWE and WWE2.
- This WireWorld Extendable automaton can operate a common construction or
- read/write arm using special functions (FORWARD, BACKWARD, LEFT, RIGHT),
- at the end of an arm, a remote WIRE cell can be written, read or erased
- using special photons (WRITE, READ), and whole circuits can be erased
- using a special designed construct. The special functions are coded in
- different HEAD states. This is a choice I made this choice consciously and
- it has nothing to do with doing it differently than WWE. In fact, I had this
- idea before I got to know WWE but didn't have enough inspiration back then.
- I managed to get every special function (FORWARD, BACKWARD, LEFT, RIGHT,
- WRITE, READ) to operate correctly with just one extra state, namely the
- TEMPORARY state. The side-effects that would normally result, and why WWE
- needs lots of extra states, are solved cleverly by restraining the possible
- number of designs. In each case the TEMPORARY pops up, the surrounding
- situation should be unique for the head that caused it to appear (LEFT,
- RIGHT, WRITE, READ). By distinguishing these unique neighborhoods,
- LEFT/RIGHT can go around corners and WRITE/READ can reach distant cells
- without making contact with them. The result is that wires that go around
- corners should have a WIRE cell AT the corner, because a 45 degree corner
- would confuse a turn-head and it will generate a turn in the opposite
- direction. Also, when a turn-head reaches the end of a wire, it writes two
- WIRE cells in the direction of the turn, as a side effect from the
- WRITE-head rules, which write a cell at a distance of two from the wire end.
- Finally, the READ head always destroys the data, as this rule would either
- conflict with the operation of the WRITE signal or the WRITE head wouldn't
- be able to write a WIRE between two WIRE cells. The latter again conflicts
- with the WRITE rule, so when a cell is written, the write arm retracts one
- cell, except when the cell already existed (write collision), otherwise a
- WIRE can not be erased when another WIRE cell is directly behind it. This
- all doesn't affect the universality of the automaton.
- States:
- 0: BACKGROUND
- 1: HEAD
- 2: TAIL
- 3: WIRE
- 4: FORWARD head
- 5: BACKWARD head
- 6: LEFT head
- 7: RIGHT head
- 8: WRITE head
- 9: READ head
- 10: TEMPORARY state
- 11: ERASE state
- For simplicity, special heads can only be created when two heads collide
- side-by-side. Adding scenarios for diagonal, opposite, etc collisions would
- require more than twice the number of rules in this table.
- Special head transition matrix:
- 1 4 5 6 7 8 9
- Special head transition matrix:
- 1 4 5 6 7 8 9
- 1 4 5 7 . 8 9 1
- 4 5 8 . . . 6 4
- 5 7 . . . . . 5
- 6 . . . 7 . . 7
- 7 8 . . . . . 6
- 8 9 6 . . . 9 8
- 9 1 4 5 7 6 8 1
- Spots with a '.' are reserved and should not be used to guarantee forward
- compatibility.
- To generate the ERASE state, one must arrange three READ states in a row in a
- 3x2 block of WIRE cells, and instead of annihilating each other, they create
- an ERASE state that will devour everything that is logically connected to it.
- Changelog:
- Version 2.2
- - Creation and Removal rules from WWE2 (by request of Alan Tennant)
- Version 2.1
- - Feeding other heads into ERASE constructor wont create oscillation anymore.
- Version 2.0
- - Differrent transition matrix for easier access to all photons.
- - Abandoned 3-micron logic backwards compatibility.
- Version 1.2
- - Combining signals with a READ heads will now 'mirror' the signal (except
- two READ heads which will always combine to a normal HEAD).
- - Fix 3-micron XOR gate bug.
- - Nicer wide display wire (3 micron).
- Contact: mark.jeronimus@gmail.com
- Number of rules: <to count>
@TABLE n_states:12 neighborhood:Moore symmetries:rotate4
- ALL
var aa={0,1,2,3,4,5,6,7,8,9,10,11} var ab={0,1,2,3,4,5,6,7,8,9,10,11} var ac={0,1,2,3,4,5,6,7,8,9,10,11} var ad={0,1,2,3,4,5,6,7,8,9,10,11} var ae={0,1,2,3,4,5,6,7,8,9,10,11} var af={0,1,2,3,4,5,6,7,8,9,10,11} var ag={0,1,2,3,4,5,6,7,8,9,10,11} var ah={0,1,2,3,4,5,6,7,8,9,10,11}
- not a head
var na={0,2,3,10,11} var nb={0,2,3,10,11} var nc={0,2,3,10,11} var nd={0,2,3,10,11} var ne={0,2,3,10,11} var nf={0,2,3,10,11} var ng={0,2,3,10,11} var nh={0,2,3,10,11}
- not BACKGROUND
var ba={1,2,3,4,5,6,7,8,9,10,11} var bb={1,2,3,4,5,6,7,8,9,10,11} var bc={1,2,3,4,5,6,7,8,9,10,11} var bd={1,2,3,4,5,6,7,8,9,10,11} var be={1,2,3,4,5,6,7,8,9,10,11} var bg={1,2,3,4,5,6,7,8,9,10,11}
- Heads
var ha={1,4,5,6,7,8,9} var hb={1,4,5,6,7,8,9} var hc={1,4,5,6,7,8,9} var hd={1,4,5,6,7,8,9} var he={1,4,5,6,7,8,9} var hf={1,4,5,6,7,8,9}
- Special heads
var sa={4,5,6,7,8,9} var sb={4,5,6,7,8,9} var sc={4,5,6,7,8,9} var sd={4,5,6,7,8,9} var se={4,5,6,7,8,9} var sf={4,5,6,7,8,9}
- BACKGROUND or WIRE
var wa={0,3} var wc={0,3} var we={0,3} var wg={0,3}
- TAIL or WIRE
var td={2,3} var tf={2,3} var th={2,3}
- OTHER
- not WIRE
var nw={0,1,2,4,5,6,7,8,9,10,11}
- not LEFT
var nl={0,1,2,3,4,5,7,8,9,10,11}
- not RIGHT
var nr={0,1,2,3,4,5,6,8,9,10,11}
- not ERASE or BACKGROUND
var e={1,2,3,4,5,6,7,8,9,10}
- ERASE interactions (highest priority) ################
- ERASE always becomes BACKGROUND
11,aa,ab,ac,ad,ae,af,ag,ah,0
- Neighbors of ERASE become ERASE
e,11,ab,ac,ad,ae,af,ag,ah,11 e,aa,11,ac,ad,ae,af,ag,ah,11
- Three READ heads in a row create an ERASE state
3, 3, 9, 9, 9, 3,af,ag,ah,11 3, 3,sb,sb,sb, 3,af,ag,ah,2
- NORMAL interactions (high priority) ################
- Nicer wide display wire (3 micron)
3, 1, 1, 3, 2, 2, 0, 0, 0,1 3, 3, 1, 1, 0, 0, 0, 2, 2,1
- Two colliding HEADs become FORWARD when propagating in a 2x2 block of cells.
3, 1, 1, 3,nd,ne,nf,ng,nh,4 3, 3, 1, 1,nd,ne,nf,ng,nh,4
- Two colliding special heads become another head type.
3, 1, 4,nc,nd,ne,nf,ng,nh,5 3, 4, 1,nc,nd,ne,nf,ng,nh,5 3,na, 1, 4,nd,ne,nf,ng,nh,5 3,na, 4, 1,nd,ne,nf,ng,nh,5
3, 4, 4,nc,nd,ne,nf,ng,nh,8 3,na, 4, 4,nd,ne,nf,ng,nh,8
3, 1, 5,nc,nd,ne,nf,ng,nh,7 3, 5, 1,nc,nd,ne,nf,ng,nh,7 3,na, 1, 5,nd,ne,nf,ng,nh,7 3,na, 5, 1,nd,ne,nf,ng,nh,7
3, 4, 8,nc,nd,ne,nf,ng,nh,6 3, 8, 4,nc,nd,ne,nf,ng,nh,6 3,na, 4, 8,nd,ne,nf,ng,nh,6 3,na, 8, 4,nd,ne,nf,ng,nh,6
3, 8, 8,nc,nd,ne,nf,ng,nh,9 3,na, 8, 8,nd,ne,nf,ng,nh,9
3, 1, 7,nc,nd,ne,nf,ng,nh,8 3, 7, 1,nc,nd,ne,nf,ng,nh,8 3,na, 1, 7,nd,ne,nf,ng,nh,8 3,na, 7, 1,nd,ne,nf,ng,nh,8
3, 6, 6,nc,nd,ne,nf,ng,nh,7 3,na, 6, 6,nd,ne,nf,ng,nh,7
3, 1, 8,nc,nd,ne,nf,ng,nh,9 3, 8, 1,nc,nd,ne,nf,ng,nh,9 3,na, 1, 8,nd,ne,nf,ng,nh,9 3,na, 8, 1,nd,ne,nf,ng,nh,9
3, 1, 9,nc,nd,ne,nf,ng,nh,1 3, 9, 1,nc,nd,ne,nf,ng,nh,1 3,na, 1, 9,nd,ne,nf,ng,nh,1 3,na, 9, 1,nd,ne,nf,ng,nh,1
3, 4, 9,nc,nd,ne,nf,ng,nh,4 3, 9, 4,nc,nd,ne,nf,ng,nh,4 3,na, 4, 9,nd,ne,nf,ng,nh,4 3,na, 9, 4,nd,ne,nf,ng,nh,4
3, 5, 9,nc,nd,ne,nf,ng,nh,5 3, 9, 5,nc,nd,ne,nf,ng,nh,5 3,na, 5, 9,nd,ne,nf,ng,nh,5 3,na, 9, 5,nd,ne,nf,ng,nh,5
3, 6, 9,nc,nd,ne,nf,ng,nh,7 3, 9, 6,nc,nd,ne,nf,ng,nh,7 3,na, 6, 9,nd,ne,nf,ng,nh,7 3,na, 9, 6,nd,ne,nf,ng,nh,7
3, 7, 9,nc,nd,ne,nf,ng,nh,6 3, 9, 7,nc,nd,ne,nf,ng,nh,6 3,na, 7, 9,nd,ne,nf,ng,nh,6 3,na, 9, 7,nd,ne,nf,ng,nh,6
3, 8, 9,nc,nd,ne,nf,ng,nh,8 3, 9, 8,nc,nd,ne,nf,ng,nh,8 3,na, 8, 9,nd,ne,nf,ng,nh,8 3,na, 9, 8,nd,ne,nf,ng,nh,8
3, 9, 9,nc,nd,ne,nf,ng,nh,1 3,na, 9, 9,nd,ne,nf,ng,nh,1
- V2.2: Removal rule from WWE2
3, 5, 0, 0, 0, 5, 0, 0, 0,0 3, 0, 0, 5, 0, 0, 0, 5, 0,0
- Normal propagation of HEAD (two special heads reset to HEAD)
3,ha,hb,nc,nd,ne,nf,ng,nh,1 3,na,hb,hc,nd,ne,nf,ng,nh,1 3,ha,nb,hc,nd,ne,nf,ng,nh,1 3,na,hb,nc,hd,ne,nf,ng,nh,1 3,ha,nb,nc,hd,ne,nf,ng,nh,1 3,na,hb,nc,nd,he,nf,ng,nh,1 3,ha,nb,nc,nd,he,nf,ng,nh,1 3,na,hb,nc,nd,ne,hf,ng,nh,1
- CONSTRUCTION interactions ################
- Certain WIRE becomes special heads when going around a corner
3,aa,ab,ac,ad,nw,nl,6,ah,6 3,nw,ab,ac,ad,ae,af,7,nr,7
3,3,ab,ac,ad,ae,af,ag,6,6 3,aa,ab,ac,ad,3,7,ag,ah,7
- Certian WIRE becomes TAIL when going around a corner (prevent bug)
3,0,0,0,0,3,0,6,0,2 3,3,0,0,0,0,0,7,0,2 3,6, 0, 0, 0, 0,af, 3, 0,2 3,7, 0, 3,ad, 0, 0, 0, 0,2
- Certian TAIL stays TAIL when going around a corner (prevent bug)
2,6, 0, 2, 0, 0, 0, 0, 3,2 2,7, 3, 0, 0, 0, 0, 2, 0,2
- BACKGROUND becomes WIRE when FORWARD finds a dead end
- V2.2: Creation rule from WWE2
0,0, 0,ac, 0,0,0,4,0,3
- BACKGROUND becomes TEMPORARY when RIGHT/LEFT finds a dead end
0,0,0,0,0,6,2,0,0,10 0,7,0,0,0,0,0,0,2,10
- TEMPORARY becomes WIRE when left or right besides a dead end
10,0,0,0,0,2,3,0,0,3 10,2,0,0,0,0,0,0,3,3
- BACKWARD becomes BACKGROUND when it finds a dead end
5,0,0,0,0,0,af,bg,ah,0
- BACKWARD becomes BACKGROUND when it erases wire
5,3,ab,0,0,5,0,0,ah,0
- TAIL stays TAIL at T-sections
- 2,0,0,3,0,6,0,2,0,2 # Don't know that this does anymore
- 2,7,0,3,0,0,0,2,0,2
- WRITE interactions ################
- WRITE becomes WIRE when WRITE finds a dead end
8,0,0,0,0,0,0,2,0,3 8,0,0,0,0,0,af,ag,2,3 8,0,0,0,0,0,2,ag,ah,3
- BACKGROUND becomes TEMPORARY when WRITE finds a dead end (when WRITE head should write)
0,0,ab,0,ad,0,0,8,0,10
- BACKGROUND becomes TEMPORARY when WRITE finds a dead end (when WRITE head should toggle)
- 0,0,ab,wc,ad,0,0,8,0,10
- READ interactions ################
- BACKGROUND becomes TEMPORARY when in between READ and WIRE
0,0,ab,3,ad,0,0,9,0,10
- TAIL becomes HEAD when the neighbor opposite to WIRE is TEMPORARY
2,10,ab,ac,ad,3,af,ag,ah,1
- Overlapping READ/WRITE/LEFT/RIGHT interactions ################
- WIRE becomes BACKGROUND when in between WIRE and TEMPORARY (erase / retract one)
3,wa,0,10,0,we,af,wg,ah,0
- BACKGROUND becomes WIRE when one neighbor is TEMPORARY and neighbors of that are BACKGROUND
0,aa,ab,ac,ad,ae,0,10,0,3
- NORMAL interactions (fallback behavior) ################
- WIRE becomes HEAD when one neighbor is HEAD
3,ha,nb,nc,nd,ne,nf,ng,nh,ha 3,na,hb,nc,nd,ne,nf,ng,nh,hb
- Heads (except READ) always becomes TAIL
ha,aa,ab,ac,ad,ae,af,ag,ah,2
- TAIL always becomes WIRE
2,aa,ab,ac,ad,ae,af,ag,ah,3
- TEMPORARY always becomes BACKGROUND
10,aa,ab,ac,ad,ae,af,ag,ah,0