Rule 54 can be emulated with HighLife, a trick I use in my soup-searching script to make it work!
Each bar is a cell in W54.
Code: Select all
x = 99, y = 10, rule = B36/S23:T100,10
o3bo3bo3bo3bo3bo3bo3bobo3bo3bo3bo3bo2bo3bo3bo3bobo3bo3bo3bo3bo2bo3bo3b
o3bo3bo$o3bo3bo3bo3bo3bo3bo3bobo3bo3bo3bo3bo2bo3bo3bo3bobo3bo3bo3bo3bo
2bo3bo3bo3bo3bo$o3bo3bo3bo3bo3bo3bo3bobo3bo3bo3bo3bo2bo3bo3bo3bobo3bo
3bo3bo3bo2bo3bo3bo3bo3bo$o3bo3bo3bo3bo3bo3bo3bobo3bo3bo3bo3bo2bo3bo3bo
3bobo3bo3bo3bo3bo2bo3bo3bo3bo3bo$o3bo3bo3bo3bo3bo3bo3bobo3bo3bo3bo3bo
2bo3bo3bo3bobo3bo3bo3bo3bo2bo3bo3bo3bo3bo$o3bo3bo3bo3bo3bo3bo3bobo3bo
3bo3bo3bo2bo3bo3bo3bobo3bo3bo3bo3bo2bo3bo3bo3bo3bo$o3bo3bo3bo3bo3bo3bo
3bobo3bo3bo3bo3bo2bo3bo3bo3bobo3bo3bo3bo3bo2bo3bo3bo3bo3bo$o3bo3bo3bo
3bo3bo3bo3bobo3bo3bo3bo3bo2bo3bo3bo3bobo3bo3bo3bo3bo2bo3bo3bo3bo3bo$o
3bo3bo3bo3bo3bo3bo3bobo3bo3bo3bo3bo2bo3bo3bo3bobo3bo3bo3bo3bo2bo3bo3bo
3bo3bo$o3bo3bo3bo3bo3bo3bo3bobo3bo3bo3bo3bo2bo3bo3bo3bobo3bo3bo3bo3bo
2bo3bo3bo3bo3bo!
Code: Select all
import golly as g
filename = g.opendialog("Open Census File")
g.addlayer()
#Count soups
soups = 0
#Run indefinitely
search = True
while search:
g.new("W54 Pattern")
g.setrule("B36/S2:T100,1")
g.select([-50,0,100,1])
g.randfill(50)
#All previous patterns
pp = []
while g.getcells([-50,0,100,1]) not in pp:
pp.append(g.getcells([-50,0,100,1]))
g.run(1)
g.update()
#Period finder
p = 1
pp = [g.getcells([-50,0,100,1])]
g.run(1)
while g.getcells([-50,0,100,1]) not in pp:
p = p + 1
pp.append(g.getcells([-50,0,100,1]))
g.run(1)
g.update()
#Someone who plays the celllo
celllist = g.getcells([-50,0,100,1])
cellpos = []
for x in range(0,len(celllist),2):
cellpos.append(celllist[x])
HEX=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V"]
HASH=""
for x in range(-50,50,5):
number=0
if x in cellpos:
number = number + 16
if x + 1 in cellpos:
number = number + 8
if x + 2 in cellpos:
number = number + 4
if x + 3 in cellpos:
number = number + 2
if x + 4 in cellpos:
number = number + 1
HASH = HASH + HEX[number]
f = open(filename,"a")
f.write("P%s" % p+"\n"+HASH+"\n")
f.close()
soups = soups + 1
g.show("Soups searched: %s" % soups)
Code: Select all
import golly as g
filename = g.opendialog("Open Census File")
#If you don't want to analyze the periods, then comment out this line...
periodname = g.opendialog("Open Period File")
g.addlayer()
#Count soups
soups = 0
#Run indefinitely
search = True
while search:
g.new("W54 Pattern")
g.setrule("B36/S2:T100,1")
g.select([-50,0,100,1])
g.randfill(50)
#All previous patterns
pp = []
while g.getcells([-50,0,100,1]) not in pp:
pp.append(g.getcells([-50,0,100,1]))
g.run(1)
g.update()
#Period finder
p = 1
pp = [g.getcells([-50,0,100,1])]
g.run(1)
while g.getcells([-50,0,100,1]) not in pp:
p = p + 1
pp.append(g.getcells([-50,0,100,1]))
g.run(1)
g.update()
#Someone who plays the celllo
celllist = g.getcells([-50,0,100,1])
cellpos = []
for x in range(0,len(celllist),2):
cellpos.append(celllist[x])
HEX=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V"]
HASH=""
for x in range(-50,50,5):
number=0
if x in cellpos:
number = number + 16
if x + 1 in cellpos:
number = number + 8
if x + 2 in cellpos:
number = number + 4
if x + 3 in cellpos:
number = number + 2
if x + 4 in cellpos:
number = number + 1
HASH = HASH + HEX[number]
f = open(filename,"a")
f.write("P%s" % p+"\n"+HASH+"\n")
f.close()
#...and these lines
f = open(periodname,"a")
f.write("P%s" % p+"\n")
f.close
soups = soups + 1
g.show("Soups searched: %s" % soups)
As of the time of this writing, Rule 110 and its relatives are the only known universal elementary cellular automata. If Rule 54 is proved universal, then this will be a huge achievement, as Rule 54 is isotropic. Note that my census files are in base 32. When converted into binary, only the last x*y bits are kept, where x and y are the bounding box. Note that here, it is 100*1. And the rule, of course, is W54.
Rule 54 can be emulated with HighLife, a trick I use in my soup-searching script to make it work!
Each bar is a cell in W54.
Code: Select all
x = 99, y = 10, rule = B36/S23:T100,10
o3bo3bo3bo3bo3bo3bo3bobo3bo3bo3bo3bo2bo3bo3bo3bobo3bo3bo3bo3bo2bo3bo3b
o3bo3bo$o3bo3bo3bo3bo3bo3bo3bobo3bo3bo3bo3bo2bo3bo3bo3bobo3bo3bo3bo3bo
2bo3bo3bo3bo3bo$o3bo3bo3bo3bo3bo3bo3bobo3bo3bo3bo3bo2bo3bo3bo3bobo3bo
3bo3bo3bo2bo3bo3bo3bo3bo$o3bo3bo3bo3bo3bo3bo3bobo3bo3bo3bo3bo2bo3bo3bo
3bobo3bo3bo3bo3bo2bo3bo3bo3bo3bo$o3bo3bo3bo3bo3bo3bo3bobo3bo3bo3bo3bo
2bo3bo3bo3bobo3bo3bo3bo3bo2bo3bo3bo3bo3bo$o3bo3bo3bo3bo3bo3bo3bobo3bo
3bo3bo3bo2bo3bo3bo3bobo3bo3bo3bo3bo2bo3bo3bo3bo3bo$o3bo3bo3bo3bo3bo3bo
3bobo3bo3bo3bo3bo2bo3bo3bo3bobo3bo3bo3bo3bo2bo3bo3bo3bo3bo$o3bo3bo3bo
3bo3bo3bo3bobo3bo3bo3bo3bo2bo3bo3bo3bobo3bo3bo3bo3bo2bo3bo3bo3bo3bo$o
3bo3bo3bo3bo3bo3bo3bobo3bo3bo3bo3bo2bo3bo3bo3bobo3bo3bo3bo3bo2bo3bo3bo
3bo3bo$o3bo3bo3bo3bo3bo3bo3bobo3bo3bo3bo3bo2bo3bo3bo3bobo3bo3bo3bo3bo
2bo3bo3bo3bo3bo!
Code: Select all
import golly as g
filename = g.opendialog("Open Census File")
g.addlayer()
#Count soups
soups = 0
#Run indefinitely
search = True
while search:
g.new("W54 Pattern")
g.setrule("B36/S2:T100,1")
g.select([-50,0,100,1])
g.randfill(50)
#All previous patterns
pp = []
while g.getcells([-50,0,100,1]) not in pp:
pp.append(g.getcells([-50,0,100,1]))
g.run(1)
g.update()
#Period finder
p = 1
pp = [g.getcells([-50,0,100,1])]
g.run(1)
while g.getcells([-50,0,100,1]) not in pp:
p = p + 1
pp.append(g.getcells([-50,0,100,1]))
g.run(1)
g.update()
#Someone who plays the celllo
celllist = g.getcells([-50,0,100,1])
cellpos = []
for x in range(0,len(celllist),2):
cellpos.append(celllist[x])
HEX=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V"]
HASH=""
for x in range(-50,50,5):
number=0
if x in cellpos:
number = number + 16
if x + 1 in cellpos:
number = number + 8
if x + 2 in cellpos:
number = number + 4
if x + 3 in cellpos:
number = number + 2
if x + 4 in cellpos:
number = number + 1
HASH = HASH + HEX[number]
f = open(filename,"a")
f.write("P%s" % p+"\n"+HASH+"\n")
f.close()
soups = soups + 1
g.show("Soups searched: %s" % soups)
Code: Select all
import golly as g
filename = g.opendialog("Open Census File")
#If you don't want to analyze the periods, then comment out this line...
periodname = g.opendialog("Open Period File")
g.addlayer()
#Count soups
soups = 0
#Run indefinitely
search = True
while search:
g.new("W54 Pattern")
g.setrule("B36/S2:T100,1")
g.select([-50,0,100,1])
g.randfill(50)
#All previous patterns
pp = []
while g.getcells([-50,0,100,1]) not in pp:
pp.append(g.getcells([-50,0,100,1]))
g.run(1)
g.update()
#Period finder
p = 1
pp = [g.getcells([-50,0,100,1])]
g.run(1)
while g.getcells([-50,0,100,1]) not in pp:
p = p + 1
pp.append(g.getcells([-50,0,100,1]))
g.run(1)
g.update()
#Someone who plays the celllo
celllist = g.getcells([-50,0,100,1])
cellpos = []
for x in range(0,len(celllist),2):
cellpos.append(celllist[x])
HEX=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V"]
HASH=""
for x in range(-50,50,5):
number=0
if x in cellpos:
number = number + 16
if x + 1 in cellpos:
number = number + 8
if x + 2 in cellpos:
number = number + 4
if x + 3 in cellpos:
number = number + 2
if x + 4 in cellpos:
number = number + 1
HASH = HASH + HEX[number]
f = open(filename,"a")
f.write("P%s" % p+"\n"+HASH+"\n")
f.close()
#...and these lines
f = open(periodname,"a")
f.write("P%s" % p+"\n")
f.close
soups = soups + 1
g.show("Soups searched: %s" % soups)