1. It must border one and only one newly occupied cell in its Von Neumann neighborhood.
2. It must not touch an occupied cell other than its 'grandparent' cell (Moore neighborhood)
3. Any two cells that touch each other (Moore neighborhood) after applying rules 1 and 2 are removed.
This table seems to emulate it properly, and matches a drawing of the evolution provided in the book.
Code: Select all
@RULE Ulam
@TABLE
neighborhood:Moore
symmetries:rotate4reflect
n_states: 4
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,1,2,3}
var f = {0,1,2,3}
var g = {0,1,2,3}
var h = {0,1,2,3}
var i = {0,2,3}
var j = {0,2,3}
var k = {0,2,3}
var l = {0,2,3}
var m = {0,2,3}
var n = {0,2,3}
var o = {0,2,3}
var p = {2,3}
#0 dead
#1 active, leading-edge cell
#2 wait cell
#3 proper cell
#all cells that are deemed to become active, fester
1,a,b,c,d,e,f,g,h,3
#all dead cells with exactly 1 orth neighbor, are tested
0,1,i,j,k,l,m,n,o,2
#all tested cells that are not touching, save for those touching parents, live on
2,3,a,p,b,c,d,e,f,0
2,3,a,b,p,c,d,e,f,0
2,3,a,b,c,p,d,e,f,0
2,a,b,c,d,e,f,g,h,1