SpectreLife supports the same rules as in HatLife:
These rules behave like those used in Golly's Generations algorithm. The
b values (1 to 7) specify the state 1 neighbor counts necessary for an empty spectre to be born (as state 1) in the next generation. The
s values (0 to 7) specify the state 1 neighbor counts necessary for a state 1 spectre to survive to the next generation. The number
n specifies the maximum number of states (2 to 9). If
n is greater than 2 then spectres don't die immediately but "decay" to the next higher state, or 0 if at the maximum state (
n-1). A spectre's neighbors normally includes all other spectres that share an edge or a vertex, but if the rule ends with
E then only neighboring spectres that share an edge are counted.
This format is based on the Larger than Life rules. The
r value (1 to 5) specifies the number of rings of neighboring spectres surrounding the central spectre. Note that the total number of spectres in this neighborhood varies from spectre to spectre (a reasonably accurate upper limit is
4r(r+1)). To see the neighborhood, enter a rule like
R5B1-1S1-1N2, set a spectre to state 1 and advance one generation. The
bmin and
bmax values specify the range of state 1 neighbor counts necessary for an empty spectre to be born (as state 1) in the next generation. The
smin and
smax values specify the range of state 1 neighbor counts necessary for a state 1 spectre to survive. The minimum value in both ranges must be less than or equal to the maximum value, and
bmin must be greater than 0. The number
n specifes the maximum number of states and spectres decay just like in the above BSN rules.
A simple implementation of Brian Silverman's Wireworld CA. Given the existence of a NOR gate (see link in top post) this rule is also Turing-complete on the spectre tiling. Here is the pattern data for the NOR gate (copy it and then select Open Clipboard in SpectreLife's File menu):
Code: Select all
SpectreLife version=1
# Two p18 clocks sending electrons into a p6 NOR gate.
view=9 -243 845
rule=WireWorld
14520=3 14548=3 14551=3 14553=3 14554=3 14555=3 14571=3 14570=3 14575=3 14544=3
14543=3 4940=3 4953=2 4957=3 4949=3 4974=3 4968=3 4969=1 4872=2 4871=3
13629=3 13630=3 13606=3 13638=3 4960=3 4961=3 4962=3 4963=3 14559=3 14558=1
14529=3 14140=3 14143=3 14145=3 14123=3 14136=3 14135=3 13661=2 13633=1 13657=3
13656=3 14540=3 13653=3 13654=3 4941=3 4942=3 14636=3 14637=3 14638=3 14640=3
14642=3 14643=3 14644=3 14452=3 14464=2 14465=1 14472=3 14473=3 14450=3 14442=3
14655=3 14656=3 14587=3 17025=3 14620=3 14633=3 14577=3 14578=3 14632=3 14517=3
14515=3 17194=3 17026=3 13713=2 13663=3 13664=3 13603=3 13714=1 13716=3
This rule was designed to support spaceships ("worms") that travel within the wide gaps between two parallel lines of reflected hats in HatLife. Unfortunately this doesn't work in SpectreLife because the gaps between odd spectres aren't consistently wide enough, so all worms eventually die out.
SpectreLife also supports a couple of rules found by James Edmond (see later posts for more info):
A rule that supports a small glider. I've modified Edmond's rule slightly so that it also supports eaters, oscillators and glider guns.
This rule creates small patterns that can travel randomly across the tiling before eventually getting stuck in loops of varying periods.
A new rule can be entered via Control > Change Rule, or created randomly via items in the File menu.