this might seem redundant, but you can have more symmetries types with more states
for example, take a 3 state rule where state 1 can be swapped with state 2
this can be written:
Code: Select all
f1(s): 1 |-> 2, 2 |-> 1
Code: Select all
@RULE 2stateCGOL-like
@TABLE
n_states:3
neighborhood:Moore
symmetries:permute
var a = {0,1,2}
var b = a
var c = a
var d = a
var e = a
var f = a
var g = a
var h = a
var i = {1,2}
var j = i
var k = i
k,i,j,a,0,0,0,0,0,1
0,1,1,1,0,0,0,0,0,2
0,1,1,2,0,0,0,0,0,2
0,2,2,2,0,0,0,0,0,1
0,2,2,1,0,0,0,0,0,1
0,1,1,1,1,2,2,0,0,2
0,2,2,2,2,1,1,0,0,1
#defaults
i,a,b,c,d,e,f,g,h,0
Code: Select all
R2
{[a,b],f1([-a,-b])}
R4
{[a,b],f1([-b,a]),f1([b,-a]),[-a,-b]}
R8
{[a,b],f1([-a,b]),f1([b,a]),[-b,a],f1([-b,-a]),[-a,-b],[b,-a],f1([a,-b])}
F2|
{[a,b],f1([-a,b])}
F2/
{[a,b],f1([b,a])}
F2-
{[a,b],f1([a,-b])}
F2\
{[a,b],f1([-b,-a])}
F4+
{[a,b],f1([-a,b]),f1([a,-b]),[-a,-b]}
F4|
{[a,b],[a,-b],f1([-a,b]),f1([-a,-b])}
F4-
{[a,b],[-a,b],f1([a,-b]),f1([-a,-b])}
F4X
{[a,b],f1([b,a]),f1([-b,-a]),[-a,-b]}
F4/
{[a,b],f1([b,a]),[-b,-a],f1([-a,-b])}
F4\
{[a,b],[b,a],f1([-b,-a]),f1([-a,-b])}
F8+
{[a,b],[-a,b],f1([-b,a]),f1([-b,-a]),[-a,-b],[a,-b],f1([b,-a]),f1([b,a])}
F8X
{[a,b],[b,a],f1([b,-a]),f1([a,-b]),[-a,-b],[-b,-a],f1([-b,a]),f1([-a,b])}
{[p1],[p2],...,[pn]} means that the points [p1],[p2],...,[pn] have all the same states
(note: f1([pn]) means the state of [pn] (s) is prosected as f1(s) in order to fit with the other states