States 0 to 5 also exist in ExtendedLifeFancy. The only difference are the colors and the fact that states 2 and 4 in StateInvestigator become states 8 and 6 (respectively) in ExtendedLifeFancy. States 6 and 7 can't be converted to ExtendedLifeFancy.
States 0 to 5 also exist in ExtendedLifeFancy. The only difference are the colors and the fact that states 2 and 4 in StateInvestigator become states 8 and 6 (respectively) in ExtendedLifeFancy. States 6 and 7 can't be converted to ExtendedLifeFancy. Despite the similarity, StateInvestigator was made ''completely independent'' of ExtendedLifeFancy.
Scripts (lua, based on invert.lua, only supports states 0 to 5 in StateInvestigator):
Scripts (lua, based on invert.lua, only supports states 0 to 5 in StateInvestigator):
@RULE StateInvestigator
@TABLE
n_states:8
neighborhood:Moore
symmetries:permute
var a={1,2,4,6}
var b={1,2,4,6}
var c={1,2,4,6}
var d={0,1,2,3,4,5,6,7}
var e={0,1,2,3,4,5,6,7}
var f={0,1,2,3,4,5,6,7}
var k={0,1,4,6}
var l={1,4,6}
var m={1,4,6}
var n={1,4,6}
var o={1,4,6}
var p={0,1,4,5,6,7}
var q={0,1,4,5,6,7}
var r={0,1,4,5,6,7}
var s={0,1,4,5,6,7}
var t={2,3,6,7}
var A={0,3,5,7}
var B={0,3,5,7}
var C={0,3,5,7}
var D={0,3,5,7}
var E={0,3,5,7}
var F={0,3,5,7}
var G={0,3,5,7}
var w={0,1,2,3,4,5,6,7}
var x={0,1,2,3,4,5,6,7}
var y={0,1,2,3,4,5,6,7}
var z={0,1,2,3,4,5,6,7}
0, a,b,c,A,B,C,D,E, 1
1, k,A,B,C,D,E,F,G, 0
1, l,m,n,o,p,q,r,s, 0
1, t,x,y,z,d,e,f,w, 0
6, p,q,r,s,w,x,y,z, 7
7, p,q,r,s,w,x,y,z, 6
@COLORS
1 0 236 91
2 0 192 254
3 254 0 0
4 254 254 254
5 75 75 75
6 254 0 254
7 64 0 128
Explanation of the rule
State 0: off cell (evolves like CGoL)
State 1: on cell (evolves like CGoL)
State 2: killer on cell (kills any adjacent cell, treated as on considering births of cells)
State 3: killer off cell (kills any adjacent cell, treated as off considering births of cells)
State 4: eternal on cell
State 5: eternal off cell
State 6: P2 killer on cell (changes into state 7 in next generation)
State 7: P2 killer off cell (changes into state 6 in next generation)
States 2-5 never change. States 6-7 always toggle. States 6 and 7 are actually an extension that allow a very strong P4 sparker.
States 0 to 5 of StateInvestigator 100% overlaps with LifeExtendedFancy. Despite that, StateInvestigator was made totally independent of LifeExtendedFancy when EV2 was searching a rule with multiple states that could allow stable bumpers, bouncers and small and fast syringes. It originally only had three states, but it was extended to six, and then extended to eight.
Some sample objects
Please save the .rule file above, and then copy down the pattern. See this page for the P53 emu gun with one herschel loop based on old conduits, and see this page for the 16 original Herschel conduits, F171, Lx65, R49 and B60.
States 0 to 5 also exist in ExtendedLifeFancy. The only difference are the colors and the fact that states 2 and 4 in StateInvestigator become states 8 and 6 (respectively) in ExtendedLifeFancy. States 6 and 7 can't be converted to ExtendedLifeFancy. Despite the similarity, StateInvestigator was made completely independent of ExtendedLifeFancy.
Scripts (lua, based on invert.lua, only supports states 0 to 5 in StateInvestigator):
-- StateInvestigator to ExtendedLifeFancy
local g = golly()
local gp = require "gplus"
-- re-assigning inner loop functions results in a 10% speed up
local setcell = g.setcell
local getcell = g.getcell
local r = gp.rect(g.getselrect())
if r.empty then g.exit("There is no selection.") end
-- local t1 = os.clock()
local oldsecs = os.clock()
for row = r.top, r.bottom do
-- if large selection then give some indication of progress
local newsecs = os.clock()
if newsecs - oldsecs >= 1.0 then
oldsecs = newsecs
g.update()
end
for col = r.left, r.right do
if g.getcell(col, row) == 2 then
g.setcell(col, row, 8)
elif g.getcell(col, row) == 4 then
g.setcell(col, row, 6)
elseif g.getcell(col, row) > 5 then
error("Invalid state")
end
end
end
if not r.visible() then g.fitsel() end
-- g.show(""..(os.clock()-t1))
g.setrule("ExtendedLifeFancy")
-- ExtendedLifeFancy to StateInvestigator
local g = golly()
local gp = require "gplus"
-- re-assigning inner loop functions results in a 10% speed up
local setcell = g.setcell
local getcell = g.getcell
local r = gp.rect(g.getselrect())
if r.empty then g.exit("There is no selection.") end
-- local t1 = os.clock()
local oldsecs = os.clock()
for row = r.top, r.bottom do
-- if large selection then give some indication of progress
local newsecs = os.clock()
if newsecs - oldsecs >= 1.0 then
oldsecs = newsecs
g.update()
end
for col = r.left, r.right do
if g.getcell(col, row) == 6 then
g.setcell(col, row, 4)
elseif g.getcell(col, row) == 8 then
g.setcell(col, row, 2)
elseif g.getcell(col, row) > 8 then
error("Invalid state")
elseif g.getcell(col, row) == 7 then
error("Invalid state")
elseif g.getcell(col, row) == 4 then
error("Invalid state")
end
end
end
if not r.visible() then g.fitsel() end
-- g.show(""..(os.clock()-t1))
g.setrule("StateInvestigator")