Two state Tri6inner neighborhood rules with B2 often have spaceships, but the rules are explosive.
I haven't tried using decay states, but Tri6inner Generations rules may be worth looking at. (For that matter, regular Triangular Moore neighborhood Generations rules might be good to look at too.)
So, lets try the Bx2 trick once again. Bx2 rules in the Tri6inner neighborhood can be created with this script (and the following script can also be modified to produce two state rules).
Code: Select all
# Tri6inner-Bx2-gen.py
import golly
rulestring = golly.getstring("Enter a Bnnn/Snnnn rule, and it will run as a Bx2 rule in the Tri6inner neighborhood.")
rulestring = rulestring.replace("/", "")
rulestring = rulestring.replace(" ", "")
rulestring = rulestring.upper()
Brulestring = rulestring.split("S")[0]
Srulestring = rulestring.split("S")[1]
rule_name = "Tri6Inner-" + Brulestring + "x2_S" + Srulestring
filename = golly.getdir("rules")+rule_name+".table"
f = open(filename, "w")
f.write("n_states:3"+"\n")
f.write("neighborhood:triangularMoore"+"\n")
f.write("symmetries:rotate"+"\n")
f.write('''
# The following diagram is from EmulateTriangular.py by The Golly Gang
# (Not sure which individual to credit)
# triangularMoore -> Moore:
#
# lower upper
# +--+--+--+ +--+--+--+
# |\B|\ |\ | |\6|\7|\ | where A=10, B=11, C=12
# |A\|C\| \| |5\|2\|8\|
# +--+--+--+ +--+--+--+
# |\3|\1|\ | |\4|\0|\9|
# |9\|0\|4\| | \|1\|3\|
# +--+--+--+ +--+--+--+
# |\8|\2|\5| |\ |\C|\A|
# | \|7\|6\| | \| \|B\|
# +--+--+--+ +--+--+--+
# To implement the Tri6Inner neighborhood,
# let the central cell be "0" above.
# Only cells 1, 2, 3, 5, 8, and 11 are considered neighbors,
# and the others are ignored.
#
''')
f.write('''
var a={0,1}
var b={a}
var c={a}
var d={a}
var e={a}
var f={a}
var g={a}
var h={a}
var i={a}
var j={a}
var k={a}
var l={a}
var m ={0,1,2}
var n = {m}
var o = {m}
var p = {m}
var q = {m}
var r = {m}
var nn = {m}
var oo = {m}
var pp = {m}
var qq = {m}
var rr = {m}
var ss = {m}
''')
Brule_dict = {
"1" : '''
# B1 - Part 1
0, 2, b, c, m, d, n, o, e, p, q, f, r,1
0, a, 2, c, m, d, n, o, e, p, q, f, r,1
0, a, b, 2, m, d, n, o, e, p, q, f, r,1
0, a, b, c, m, 2, n, o, e, p, q, f, r,1
0, a, b, c, m, d, n, o, 2, p, q, f, r,1
0, a, b, c, m, d, n, o, e, p, q, 2, r,1
# B1 - Part 2
1, 2, b, c, m, d, n, o, e, p, q, f, r,2
1, a, 2, c, m, d, n, o, e, p, q, f, r,2
1, a, b, 2, m, d, n, o, e, p, q, f, r,2
1, a, b, c, m, 2, n, o, e, p, q, f, r,2
1, a, b, c, m, d, n, o, 2, p, q, f, r,2
1, a, b, c, m, d, n, o, e, p, q, 2, r,2
''',
"2" : '''
# B2 - Part 1
0, 2, 2, c, m, d, n, o, e, p, q, f, r,1
0, 2, b, 2, m, d, n, o, e, p, q, f, r,1
0, 2, b, c, m, 2, n, o, e, p, q, f, r,1
0, 2, b, c, m, d, n, o, 2, p, q, f, r,1
0, 2, b, c, m, d, n, o, e, p, q, 2, r,1
0, a, 2, 2, m, d, n, o, e, p, q, f, r,1
0, a, 2, c, m, 2, n, o, e, p, q, f, r,1
0, a, 2, c, m, d, n, o, 2, p, q, f, r,1
0, a, 2, c, m, d, n, o, e, p, q, 2, r,1
0, a, b, 2, m, 2, n, o, e, p, q, f, r,1
0, a, b, 2, m, d, n, o, 2, p, q, f, r,1
0, a, b, 2, m, d, n, o, e, p, q, 2, r,1
0, a, b, c, m, 2, n, o, 2, p, q, f, r,1
0, a, b, c, m, 2, n, o, e, p, q, 2, r,1
0, a, b, c, m, d, n, o, 2, p, q, 2, r,1
# B2 - Part 2
1, 2, 2, c, m, d, n, o, e, p, q, f, r,2
1, 2, b, 2, m, d, n, o, e, p, q, f, r,2
1, 2, b, c, m, 2, n, o, e, p, q, f, r,2
1, 2, b, c, m, d, n, o, 2, p, q, f, r,2
1, 2, b, c, m, d, n, o, e, p, q, 2, r,2
1, a, 2, 2, m, d, n, o, e, p, q, f, r,2
1, a, 2, c, m, 2, n, o, e, p, q, f, r,2
1, a, 2, c, m, d, n, o, 2, p, q, f, r,2
1, a, 2, c, m, d, n, o, e, p, q, 2, r,2
1, a, b, 2, m, 2, n, o, e, p, q, f, r,2
1, a, b, 2, m, d, n, o, 2, p, q, f, r,2
1, a, b, 2, m, d, n, o, e, p, q, 2, r,2
1, a, b, c, m, 2, n, o, 2, p, q, f, r,2
1, a, b, c, m, 2, n, o, e, p, q, 2, r,2
1, a, b, c, m, d, n, o, 2, p, q, 2, r,2
''',
"3" : '''
# B3 - Part 1
0, 2, 2, 2, m, d, n, o, e, p, q, f, r,1
0, 2, 2, c, m, 2, n, o, e, p, q, f, r,1
0, 2, 2, c, m, d, n, o, 2, p, q, f, r,1
0, 2, 2, c, m, d, n, o, e, p, q, 2, r,1
0, 2, b, 2, m, 2, n, o, e, p, q, f, r,1
0, 2, b, 2, m, d, n, o, 2, p, q, f, r,1
0, 2, b, 2, m, d, n, o, e, p, q, 2, r,1
0, 2, b, c, m, 2, n, o, 2, p, q, f, r,1
0, 2, b, c, m, 2, n, o, e, p, q, 2, r,1
0, 2, b, c, m, d, n, o, 2, p, q, 2, r,1
0, a, 2, 2, m, 2, n, o, e, p, q, f, r,1
0, a, 2, 2, m, d, n, o, 2, p, q, f, r,1
0, a, 2, 2, m, d, n, o, e, p, q, 2, r,1
0, a, 2, c, m, 2, n, o, 2, p, q, f, r,1
0, a, 2, c, m, 2, n, o, e, p, q, 2, r,1
0, a, 2, c, m, d, n, o, 2, p, q, 2, r,1
0, a, b, 2, m, 2, n, o, 2, p, q, f, r,1
0, a, b, 2, m, 2, n, o, e, p, q, 2, r,1
0, a, b, 2, m, d, n, o, 2, p, q, 2, r,1
0, a, 2, c, m, 2, n, o, e, p, q, f, r,1
0, a, b, c, m, 2, n, o, 2, p, q, 2, r,1
# B3 - Part 2
1, 2, 2, 2, m, d, n, o, e, p, q, f, r,2
1, 2, 2, c, m, 2, n, o, e, p, q, f, r,2
1, 2, 2, c, m, d, n, o, 2, p, q, f, r,2
1, 2, 2, c, m, d, n, o, e, p, q, 2, r,2
1, 2, b, 2, m, 2, n, o, e, p, q, f, r,2
1, 2, b, 2, m, d, n, o, 2, p, q, f, r,2
1, 2, b, 2, m, d, n, o, e, p, q, 2, r,2
1, 2, b, c, m, 2, n, o, 2, p, q, f, r,2
1, 2, b, c, m, 2, n, o, e, p, q, 2, r,2
1, 2, b, c, m, d, n, o, 2, p, q, 2, r,2
1, a, 2, 2, m, 2, n, o, e, p, q, f, r,2
1, a, 2, 2, m, d, n, o, 2, p, q, f, r,2
1, a, 2, 2, m, d, n, o, e, p, q, 2, r,2
1, a, 2, c, m, 2, n, o, 2, p, q, f, r,2
1, a, 2, c, m, 2, n, o, e, p, q, 2, r,2
1, a, 2, c, m, d, n, o, 2, p, q, 2, r,2
1, a, b, 2, m, 2, n, o, 2, p, q, f, r,2
1, a, b, 2, m, 2, n, o, e, p, q, 2, r,2
1, a, b, 2, m, d, n, o, 2, p, q, 2, r,2
1, a, 2, c, m, 2, n, o, e, p, q, f, r,2
1, a, b, c, m, 2, n, o, 2, p, q, 2, r,2
''',
"4" : '''
# B4 - Part 1
0, a, b, 2, m, 2, n, o, 2, p, q, 2, r,1
0, a, 2, b, m, 2, n, o, 2, p, q, 2, r,1
0, a, 2, 2, m, b, n, o, 2, p, q, 2, r,1
0, a, 2, 2, m, 2, n, o, b, p, q, 2, r,1
0, a, 2, 2, m, 2, n, o, 2, p, q, b, r,1
0, 2, a, b, m, 2, n, o, 2, p, q, 2, r,1
0, 2, a, 2, m, b, n, o, 2, p, q, 2, r,1
0, 2, a, 2, m, 2, n, o, b, p, q, 2, r,1
0, 2, a, 2, m, 2, n, o, 2, p, q, b, r,1
0, 2, 2, a, m, b, n, o, 2, p, q, 2, r,1
0, 2, 2, a, m, 2, n, o, b, p, q, 2, r,1
0, 2, 2, a, m, 2, n, o, 2, p, q, b, r,1
0, 2, 2, 2, m, a, n, o, b, p, q, 2, r,1
0, 2, 2, 2, m, a, n, o, 2, p, q, b, r,1
0, 2, 2, 2, m, 2, n, o, a, p, q, b, r,1
# B4 - Part 2
1, a, b, 2, m, 2, n, o, 2, p, q, 2, r,2
1, a, 2, b, m, 2, n, o, 2, p, q, 2, r,2
1, a, 2, 2, m, b, n, o, 2, p, q, 2, r,2
1, a, 2, 2, m, 2, n, o, b, p, q, 2, r,2
1, a, 2, 2, m, 2, n, o, 2, p, q, b, r,2
1, 2, a, b, m, 2, n, o, 2, p, q, 2, r,2
1, 2, a, 2, m, b, n, o, 2, p, q, 2, r,2
1, 2, a, 2, m, 2, n, o, b, p, q, 2, r,2
1, 2, a, 2, m, 2, n, o, 2, p, q, b, r,2
1, 2, 2, a, m, b, n, o, 2, p, q, 2, r,2
1, 2, 2, a, m, 2, n, o, b, p, q, 2, r,2
1, 2, 2, a, m, 2, n, o, 2, p, q, b, r,2
1, 2, 2, 2, m, a, n, o, b, p, q, 2, r,2
1, 2, 2, 2, m, a, n, o, 2, p, q, b, r,2
1, 2, 2, 2, m, 2, n, o, a, p, q, b, r,2
''',
"5" : '''
# B5 - Part 1
0, a, 2, 2, m, 2, n, o, 2, p, q, 2, r,1
0, 2, a, 2, m, 2, n, o, 2, p, q, 2, r,1
0, 2, 2, a, m, 2, n, o, 2, p, q, 2, r,1
0, 2, 2, 2, m, a, n, o, 2, p, q, 2, r,1
0, 2, 2, 2, m, 2, n, o, a, p, q, 2, r,1
0, 2, 2, 2, m, 2, n, o, 2, p, q, a, r,1
# B5 - Part 2
1, a, 2, 2, m, 2, n, o, 2, p, q, 2, r,2
1, 2, a, 2, m, 2, n, o, 2, p, q, 2, r,2
1, 2, 2, a, m, 2, n, o, 2, p, q, 2, r,2
1, 2, 2, 2, m, a, n, o, 2, p, q, 2, r,2
1, 2, 2, 2, m, 2, n, o, a, p, q, 2, r,2
1, 2, 2, 2, m, 2, n, o, 2, p, q, a, r,2
''',
"6" : '''
# B6 - Part 1
0, 2, 2, 2, m, 2, n, o, 2, p, q, 2, r,1
# B6 - Part 2
1, 2, 2, 2, m, 2, n, o, 2, p, q, 2, r,2
'''
}
Srule_dict = { "0" : '''
# S0
2, a, b, c, m, d, n, o, e, p, q, f, r,2
''',
"1" : '''
# S1
2, 2, b, c, m, d, n, o, e, p, q, f, r,2
2, a, 2, c, m, d, n, o, e, p, q, f, r,2
2, a, b, 2, m, d, n, o, e, p, q, f, r,2
2, a, b, c, m, 2, n, o, e, p, q, f, r,2
2, a, b, c, m, d, n, o, 2, p, q, f, r,2
2, a, b, c, m, d, n, o, e, p, q, 2, r,2
''',
"2" : '''
# S2
2, 2, 2, c, m, d, n, o, e, p, q, f, r,2
2, 2, b, 2, m, d, n, o, e, p, q, f, r,2
2, 2, b, c, m, 2, n, o, e, p, q, f, r,2
2, 2, b, c, m, d, n, o, 2, p, q, f, r,2
2, 2, b, c, m, d, n, o, e, p, q, 2, r,2
2, a, 2, 2, m, d, n, o, e, p, q, f, r,2
2, a, 2, c, m, 2, n, o, e, p, q, f, r,2
2, a, 2, c, m, d, n, o, 2, p, q, f, r,2
2, a, 2, c, m, d, n, o, e, p, q, 2, r,2
2, a, b, 2, m, 2, n, o, e, p, q, f, r,2
2, a, b, 2, m, d, n, o, 2, p, q, f, r,2
2, a, b, 2, m, d, n, o, e, p, q, 2, r,2
2, a, b, c, m, 2, n, o, 2, p, q, f, r,2
2, a, b, c, m, 2, n, o, e, p, q, 2, r,2
2, a, b, c, m, d, n, o, 2, p, q, 2, r,2
''',
"3" : '''
# S3
2, 2, 2, 2, m, d, n, o, e, p, q, f, r,2
2, 2, 2, c, m, 2, n, o, e, p, q, f, r,2
2, 2, 2, c, m, d, n, o, 2, p, q, f, r,2
2, 2, 2, c, m, d, n, o, e, p, q, 2, r,2
2, 2, b, 2, m, 2, n, o, e, p, q, f, r,2
2, 2, b, 2, m, d, n, o, 2, p, q, f, r,2
2, 2, b, 2, m, d, n, o, e, p, q, 2, r,2
2, 2, b, c, m, 2, n, o, 2, p, q, f, r,2
2, 2, b, c, m, 2, n, o, e, p, q, 2, r,2
2, 2, b, c, m, d, n, o, 2, p, q, 2, r,2
2, a, 2, 2, m, 2, n, o, e, p, q, f, r,2
2, a, 2, 2, m, d, n, o, 2, p, q, f, r,2
2, a, 2, 2, m, d, n, o, e, p, q, 2, r,2
2, a, 2, c, m, 2, n, o, 2, p, q, f, r,2
2, a, 2, c, m, 2, n, o, e, p, q, 2, r,2
2, a, 2, c, m, d, n, o, 2, p, q, 2, r,2
2, a, b, 2, m, 2, n, o, 2, p, q, f, r,2
2, a, b, 2, m, 2, n, o, e, p, q, 2, r,2
2, a, b, 2, m, d, n, o, 2, p, q, 2, r,2
2, a, 2, c, m, 2, n, o, e, p, q, f, r,2
2, a, b, c, m, 2, n, o, 2, p, q, 2, r,2
''',
"4" : '''
# S4
2, a, b, 2, m, 2, n, o, 2, p, q, 2, r,2
2, a, 2, b, m, 2, n, o, 2, p, q, 2, r,2
2, a, 2, 2, m, b, n, o, 2, p, q, 2, r,2
2, a, 2, 2, m, 2, n, o, b, p, q, 2, r,2
2, a, 2, 2, m, 2, n, o, 2, p, q, b, r,2
2, 2, a, b, m, 2, n, o, 2, p, q, 2, r,2
2, 2, a, 2, m, b, n, o, 2, p, q, 2, r,2
2, 2, a, 2, m, 2, n, o, b, p, q, 2, r,2
2, 2, a, 2, m, 2, n, o, 2, p, q, b, r,2
2, 2, 2, a, m, b, n, o, 2, p, q, 2, r,2
2, 2, 2, a, m, 2, n, o, b, p, q, 2, r,2
2, 2, 2, a, m, 2, n, o, 2, p, q, b, r,2
2, 2, 2, 2, m, a, n, o, b, p, q, 2, r,2
2, 2, 2, 2, m, a, n, o, 2, p, q, b, r,2
2, 2, 2, 2, m, 2, n, o, a, p, q, b, r,2
''',
"5" : '''
# S5
2, a, 2, 2, m, 2, n, o, 2, p, q, 2, r,2
2, 2, a, 2, m, 2, n, o, 2, p, q, 2, r,2
2, 2, 2, a, m, 2, n, o, 2, p, q, 2, r,2
2, 2, 2, 2, m, a, n, o, 2, p, q, 2, r,2
2, 2, 2, 2, m, 2, n, o, a, p, q, 2, r,2
2, 2, 2, 2, m, 2, n, o, 2, p, q, a, r,2
''',
"6" : '''
# S6
2, 2, 2, 2, m, 2, n, o, 2, p, q, 2, r,2
''' }
for i in Brulestring:
if i in ["1", "2", "3", "4", "5", "6"]:
f.write(Brule_dict[i])
f.write("# Death otherwise" + "\n")
f.write(" 1, nn, oo,pp, m, qq, n, o, rr, p, q, ss, r,0" + "\n")
for i in Srulestring:
if i in ["0", "1", "2", "3", "4", "5", "6"]:
f.write(Srule_dict[i])
f.write("# Death otherwise"+"\n")
f.write("2, nn, oo,pp, m, qq, n, o, rr, p, q, ss, r,0" + "\n")
f.flush()
f.close()
# All code below this line is from RuleTableToTree.py by the Golly Gang
import golly
import os
from glife.ReadRuleTable import *
from glife.RuleTree import *
from glife.EmulateTriangular import *
from glife.EmulateMargolus import *
from glife.EmulateOneDimensional import *
from glife.EmulateHexagonal import *
if len(filename) == 0: golly.exit() # user hit Cancel
# add new converters here as they become available:
Converters = {
"vonNeumann":ConvertRuleTableTransitionsToRuleTree,
"Moore":ConvertRuleTableTransitionsToRuleTree,
"triangularVonNeumann":EmulateTriangular,
"triangularMoore":EmulateTriangular,
"Margolus":EmulateMargolus,
"square4_figure8v":EmulateMargolus,
"square4_figure8h":EmulateMargolus,
"square4_cyclic":EmulateMargolus,
"oneDimensional":EmulateOneDimensional,
"hexagonal":EmulateHexagonal,
}
golly.show("Reading from rule table file...")
n_states, neighborhood, transitions = ReadRuleTable(filename)
if not neighborhood in Converters:
golly.warn("Unsupported neighborhood: "+neighborhood)
golly.show('')
golly.exit()
golly.show("Building rule tree...")
rule_name = Converters[neighborhood]( neighborhood,
n_states,
transitions,
filename )
golly.setalgo('RuleTree')
golly.setrule(rule_name)
golly.show('Created '+rule_name+'.tree and selected that rule.')
To my surprise Tri6Inner-B1x2_S1 has spaceships. It is a very sparse rule, but it has a rather rare natural rake, and while oscillators are also rare, there is a sparky oscillator looks like it might be useful:
Tri6inner-B16x2_S156 is a richer version of the rule.
Here's a whole other sort of rule.
Want to see something different? Watch what happens around generation 2,700.
ships and some fun blobby chaos. The ship on the left can be used to
make all sorts of rakes.
If anyone wants to do anything further with this neighborhood, the following might be helpful. I much prefer to represent rules as an algorithm rather than a ruletable. Unfortunately, the make-ruletree approach bogs down with more than 8 or so states, and what feels like a three state triangular neighborhood rule to us is really a 9 state rule in Golly. Still, here's how to represent the Tri6inner neighborhood in a make-ruletree algorithm. Take Andrew's TriLife-gen.py, and make the following substitutions: