Code: Select all
x = 15, y = 5, rule = bs012345678History
4D$4D7.4D$2DAD7.DA2D$4D7.4D$11.4D!
Code: Select all
x = 15, y = 5, rule = bs012345678History
4D$4D7.4D$2DAD7.DA2D$4D7.4D$11.4D!
III is not at all a golly wishlist item in my opinion as much as a wishlist for things to be found in the next year
Code: Select all
x = 15, y = 13, rule = B3/S23
7bo2$3b2o5b2o$b2o4bo4b2o$5b2ob2o$bobo7bobo$bo2bobobobo2bo$5obobob5o$o
4bo3bo4bo$b3obobobob3o$3bob2obo2bo$8bobo$8b2o!
Code: Select all
x = 13, y = 20, rule = B3/S23
11b2o$11b2o4$8b2o$8b2o2$2o$2o3$3b2o$3b2o2$11b2o$10b2o$12bo$3b2o$3b2o!
To clarify, I'm pretty sure that this request is specific to the case where a script calls g.new() early on (or something similar) so there won't be a warning about losing unsaved work.
I posted about that a while ago, and it's in patterns/other-rules/b2ein-spaceships-and-rakes.rle, golly 3.3.muzik wrote: ↑January 17th, 2020, 10:03 pmFor bundled patterns I think that the microscopic orthogonoids in this rule should definitely be added:
viewtopic.php?p=75164#p75164
Thanks! See, that's why other people should be cleaning up and commenting patterns for the collection. I try to do as much as I can quickly, and just end up making silly mistakes.
Code: Select all
#N b2ein-spaceships-and-rakes.rle
#C
#C Left: small fast Orthogonoid by AforAmpere, 17 April 2019
#C Speed is 48c/3066, or slightly faster than C/64 (~C/63.87).
#C http://www.conwaylife.com/forums/viewtopic.php?p=75164#p75164
#C
#C Right, top to bottom: small spaceships and rakes by Luka Okanishi;
#C see http://www.conwaylife.com/forums/viewtopic.php?p=75667#p75667
#C Individual 4-rep (3,0)c/20 p80 G-loop spaceship
#C 3-rep (3,0)c/20 p80 spaceship
#C 2-rep (3,0)c/20 p160 cis_double-barreled G backrake
#C 2 different 2-rep (3,0)c/20 p80 G/L trans-backrakes
#C 2-rep (3,0)c/20 p80 trans-backG-sideA-rake
#C 2-rep (3,0)c/20 p80 G backrake
#C
x = 747, y = 862, rule = B2ein3cijn4cnrwy5cnq6e/S1c2-ai3acny4anqy5c6ek8
110bo2$112b2o$114bo$109bo2bobo$113bo$110bo15$543bo11bo$107b3o431b2ob2o
7b2ob2o$107bobo430b7o5b7o$127bo412b2o3b2o5b2o3b2o$126b2o412b2o3b2o5b2o
3b2o$126b2o412b7o5b7o$541b2ob2o7b2ob2o$543bo11bo2$543bo11bo$531bo9b2ob
2o7b2ob2o$107b3o422bo7b7o5b7o$107bobo421b2o7b2o3b2o5b2o3b2o$540b2o3b2o
5b2o3b2o$540b7o5b7o$541b2ob2o7b2ob2o$543bo11bo$107b3o$107bobo3$574b3o$
573bo3bo$575bo$539bobo$539b2o20b2o$561b2o$575bo$573bo3bo$147b2o425b3o$
147b2o374bo$524bo$523b2o2$24b2o46b2o46b2o$24b2o46b2o46b2o$36b2o22b2o
17b2o3b2o4bo13b2o2b2o22b2o$36b2o22b2o17bo4b2o5bo13bo2b2o22b2o403b2o$
79b2o9bo13b2o431b3o$556bo$557bo$556b2o3$547bobo$547b2o3$84bo$83bobo
476b2o13b2o$515bo19b3o23bo2bo11bo2bo$516bo17bo3bo22bo2bo11bo2bo$515b2o
16bo5bo20bo3bo11bo3bo$533bo5bo21bo2bo11bo2bo$534bo3bo22bo2bo11bo2bo$
107bobo425b3o24b2o13b2o$108bo3$535b3o$83b3o448bo3bo$83bobo21bobo423bo
5bo$108bo424bo5bo$534bo3bo$535b3o7$107bobo$83b3o22bo$83bobo15$107bobo$
108bo2$84bo$83bobo2$107bobo$108bo2$84bo$83bobo2$107bobo$108bo2$84bo$
83bobo14$83b3o$83bobo6$84bo$83bobo6$107bobo$83b3o21b3o467bo$83bobo489b
2ob2o$574b7o$573b4ob4o$573b2o5b2o$573b2o5b2o$573b4ob4o$574b7o$107bobo
465bo3bo$108bo454b2o$563b2o10bo3bo$574b7o$573b4ob4o$573b2o5b2o$83b3o
487b2o5b2o$83bobo21bobo463b4ob4o$108bo465b7o$575b2ob2o$577bo2$83b3o$
83bobo2$543bo$545bo23b2o$107bobo435bo25bo$83b3o22bo462bo$83bobo457bobo
2bo17bo4bo$543bo27bo$543bo27bo$544b2o23b2o$107bobo$108bo9$546b2o$545bo
2bo$544bo$531b2o11bo$527bo2b3o10bo6bo$544bo$528bo15bo$525bo19bo2bo$
525b2o19b2o2$83b3o$83bobo5$107bobo$84bo22b3o$83bobo9$84bo$83bobo2$107b
obo$107b3o4$84bo$83bobo2$107bobo$108bo4$84bo$83bobo$107bobo$107b3o4$
83b3o$83bobo4$59bobo$60bo3$83b3o$83bobo21bobo$108bo3$59bobo$59b3o$107b
obo$108bo$84bo$83bobo3$107bobo$108bo$84bo$59bobo21bobo$60bo10$59bobo$
60bo4$107bobo$107b3o$83b3o$83bobo2$549bo11bo$547b2ob2o7b2ob2o$546b7o5b
7o$546b2o3b2o5b2o3b2o$546b2o3b2o5b2o3b2o$546b7o5b7o$547b2ob2o7b2ob2o$
107bobo439bo11bo$107b3o$59bobo487bo11bo$60bo486b2ob2o7b2ob2o$538b2o6b
7o5b7o$538b2o6b2o3b2o5b2o3b2o$546b2o3b2o5b2o3b2o$546b6o6b7o$547b2obo2b
2o4b2ob2o$59bobo487bo2b2o7bo$60bo$84bo$83bobo21bobo463bo$108bo433b2o
27b2ob2o$541b3o6b2o19b5o$541b2o7b2o19b5o$59bobo479bo29b2ob2o$60bo512bo
4$573bo$59bobo509b2ob2o$60bo510b5o$571b5o$571b2ob2o$573bo$83b3o21bobo$
83bobo22bo4$59bobo$60bo46bobo$108bo7$59bobo21b3o$59b3o21bobo5$59bobo$
59b3o$83b3o$83bobo$107bobo$107b3o$59bobo$59b3o3$107bobo$107b3o3$84bo$
83bobo3$59bobo$60bo$84bo$83bobo$107bobo$108bo7$83b3o$83bobo4$59bobo$
59b3o3$107bobo$83b3o21b3o$59bobo21bobo$59b3o3$107bobo$83b3o21b3o$83bob
o3$59bobo$60bo2$84bo$83bobo5$107bobo479b4o11b4o$107b3o479b4o11b4o$588b
2obobo9bobob2o$584b2o2bo2bobo9bobo2bo$584b2o2b2obobo9bobob2o$589b4o11b
4o$589b4o11b4o2$84bo22bobo$83bobo22bo479b3o$587bo3bo$59bobo495bo28b2o
3b2o$59b3o494bo28b4ob4o$555bo28b3o5b3o$555b2o26bo2bo5bo2bo$107bobo473b
o2bo5bo2bo$107b3o474b2o7b2o4$84bo$83bobo$584b2o7b2o$59bobo521bo2bo5bo
2bo$60bo503b2o17bo2bo5bo2bo$564b3o17b3o5b3o$84bo500b4ob4o$83bobo500b2o
3b2o$587bo3bo$588b3o$107bobo$108bo5$107bobo$108bo$59bobo$60bo4$107bobo
$59bobo21b3o21b3o$60bo22bobo5$107bobo$107b3o4$84bo$59bobo21bobo$60bo4$
84bo$83bobo21bobo$107b3o4$84bo$83bobo2$59bobo45bobo$60bo47bo6$59bobo
21b3o$59b3o21bobo$107bobo$107b3o3$59bobo$59b3o21b3o$83bobo21bobo$107b
3o4$59bobo$60bo2$107bobo$107b3o3$84bo$83bobo2$59bobo$59b3o45bobo$107b
3o4$59bobo$59b3o4$107bobo$107b3o3$83b3o$83bobo3$59bobo45bobo$59b3o46bo
5$59bobo$59b3o22bo$83bobo5$84bo$59bobo21bobo$59b3o6$83b3o$83bobo2$59bo
bo$60bo46bobo$108bo3$84bo$83bobo$107bobo493b2o13b2o$108bo2$600bobo4bo
7bo4bobo$600bo6bo7bo6bo$601bo2bobo9bobo2bo$605bo11bo$84bo$83bobo519bo
11bo$562b2o37bo2bobo9bobo2bo$561bobo36bo6bo7bo6bo$600bobo4bo7bo4bobo3$
603b2o13b2o$602bo$600b2ob2o$600b5o$571bo27bo5bo$571b2o24b2o3bo3b2o$
571b3o23b2o7b2o$59bobo510b2o23b2o7b2o$59b3o535b2o3bo3b2o2$588b2o$83b3o
502b2o12bo$83bobo2$597b2o3bo3b2o$597b2o7b2o$597b2o7b2o$597b2o3bo3b2o$
84bo514bo5bo$59bobo21bobo514b5o$60bo539b2ob2o$602bo3$84bo$83bobo7$83b
3o$83bobo$59bobo$60bo4$83b3o$59bobo21bobo$60bo7$83b3o$83bobo4$59bobo$
60bo22b3o$83bobo5$83b3o$83bobo2$59bobo$60bo13$59bobo$59b3o6$83b3o$83bo
bo6$59bobo21b3o$60bo22bobo6$59bobo$60bo5$59bobo$59b3o22bo$83bobo4$59bo
bo$59b3o6$59bobo$60bo$567b2o$567b2o60b4o$84bo482bo61b4o$83bobo542bobob
2o$59bobo553b2o11bobo2bo$60bo554b2o11bobob2o$629b4o$629b4o$84bo$83bobo
2$59bobo$59b3o539b3o9b3o$594bo5bo3bo7bo3bo$594b2o3b2o3b2o5b2o3b2o$587b
2o5b2o4b2ob4o3b4ob4o$587b2o7bo8b3ob3o5b3o$597bobo5bo5bo5bo2bo$596bo2bo
5bo5bo5bo2bo$597b2o7b2ob2o7b2o5$59bobo$59b3o535b2o7b2ob2o7b2o$596bo2bo
5bo5bo5bo2bo$596bo2bo5bo5bo5bo2bo$84bo512b3o5b3ob3o5b3o$83bobo512b4ob
4o3b4ob4o$599b2o3b2o5b2o3b2o$600bo3bo7bo3bo$59bobo539b3o9b3o$60bo4$84b
o$59bobo21bobo$60bo5$83b3o$83bobo8$83b3o$83bobo$59bobo$60bo$582bobo$
583bo$83b3o$83bobo$59bobo$60bo8$59bobo$60bo5$59bobo22bo$60bo22bobo5$
59bobo$60bo5$83b3o$83bobo4$59bobo$59b3o21b3o$83bobo5$84bo$83bobo5$84bo
$83bobo4$59bobo$60bo4$84bo$58b2obob2o10bo6b2obo52b2o$12b2o22b2o19bo3bo
2bo11bo5bob3o21b2o28b2o$12b2o22b2o20b2o3b2o10bo8bobo21b2o14b2o$2o46b2o
10bo22b4o9b2o26b2o$2o46b2o33b3o10b2o4$145b2o596b2o$145b2o595bo2bo$742b
o2bo$728b2o12bo3bo$728b2o12bo2bo$83bobo656bo2bo$83b3o657b2o5$83bobo$
83b3o53b2o566b2o$139b2o566bo8bo11bo$708bo5b2ob2o7b2ob2o$713b7o5b7o$
713b2o3b2o5b2o3b2o$713b2o3b2o5b2o3b2o$83bobo627b7o5b7o$84bo629b2ob2o7b
2ob2o$716bo11bo2$716bo11bo$714b2ob2o7b2ob2o$83bobo627b7o5b7o$84bo628b
2o3b2o5b2o3b2o$713b2o3b2o5b2o3b2o$116bo596b7o5b7o$117bo596b2ob2o7b2ob
2o$116b2o598bo11bo$123b2o$123bobo4$83bobo596b2o$83b3o596bo$683bo7$84b
5o$85b3ob2o$85bo2b4o$82bo2bo4b2o$83b3o4b2o$90b2o!
Code: Select all
-- Oscar is an OSCillation AnalyzeR for use with Golly.
--
-- This script uses Gabriel Nivasch's "keep minima" algorithm.
-- For each generation, calculate a hash value for the pattern. Keep all of
-- the record-breaking minimal hashes in a list, with the oldest first.
-- For example, after 5 generations the saved hash values might be:
--
-- 8 12 16 24 25,
--
-- If the next hash goes down to 13 then the list can be shortened:
--
-- 8 12 13.
--
-- If the current hash matches one of the saved hashes, it is highly likely
-- the pattern is oscillating. By keeping a corresponding list of generation
-- counts we can calculate the period. We also keep lists of population
-- counts and bounding boxes to reduce the chance of spurious oscillator
-- detection due to hash collisions. The bounding box info also allows us
-- to detect moving oscillators (spaceships/knightships).
local g = golly()
min = 2147483648
-- initialize lists
local hashlist = {} -- for pattern hash values
local genlist = {} -- corresponding generation counts
local poplist = {} -- corresponding population counts
local boxlist = {} -- corresponding bounding boxes
local t = {} -- corresponding not removing list of pops
local population = tonumber(g.getpop())
-- check if outer-totalistic rule has B0 but not S8
local r = g.getrule()
r = string.match(r, "^(.+):") or r
local hasB0notS8 = r:find("B0") == 1 and r:find("/") > 1 and r:sub(-1,-1) ~= "8"
----------------------------------------------------------------------
local function show_spaceship_speed(period, deltax, deltay, smallestphase)
-- we found a moving oscillator
if deltax == deltay or deltax == 0 or deltay == 0 then
local speed = ""
local speed2 = ""
if deltax == 0 or deltay == 0 then
-- orthogonal spaceship
speed2 = speed2..(deltax + deltay)
if speed2 == "" then
speed2 = 1
end
else
-- diagonal spaceship (deltax == deltay)
speed2 = deltax
if speed2 == "" then
speed2 = 1
end
end
if deltax == deltay then
if period == 1 then
if smallestphase < 15 then
g.show("Diagonal spaceship detected (speed = (1, 1)/1, systematic name "..smallestphase.."P"..period.."H"..speed2.."V"..speed2..")")
else
g.show("Diagonal spaceship detected (speed = (1, 1)/1, systematic name "..smallestphase.."P"..period.."H"..speed2.."V"..speed2..")")
end
else
if smallestphase < 15 then
g.show("Diagonal spaceship detected (speed = ("..speed2..", "..speed2..")/"..period..", systematic name "..smallestphase.."P"..period.."H"..speed2.."V"..speed2..")")
else
g.show("Diagonal spaceship detected (speed = ("..speed2..", "..speed2..")/"..period..", systematic name "..smallestphase.."P"..period.."H"..speed2.."V"..speed2..")")
end
end
else
if period == 1 then
if smallestphase < 15 then
g.show("Orthogonal spaceship detected (speed = (1, 0)/1, systematic name "..smallestphase.."P"..period.."H"..speed2.."V0)")
else
g.show("Orthogonal spaceship detected (speed = (1, 0)/1, systematic name "..smallestphase.."P"..period.."H"..speed2.."V0)")
end
else
if smallestphase < 15 then
g.show("Orthogonal spaceship detected (speed = ("..speed2..", 0)/"..period..", systematic name "..smallestphase.."P"..period.."H"..speed2.."V0)")
else
g.show("Orthogonal spaceship detected (speed = ("..speed2..", 0)/"..period..", systematic name "..smallestphase.."P"..period.."H"..speed2.."V0)")
end
end
end
else
-- deltax != deltay and both > 0
local speed = deltay..", "..deltax
if deltay > deltax then
speed2 = deltay
speed3 = deltax
else
speed2 = deltax
speed3 = deltay
end
if 1 == 1 then
g.show("Knightship detected (speed = ("..speed..")/"..period..", systematic name "..smallestphase.."P"..period.."H"..speed2.."V"..speed3..")")
end
end
end
----------------------------------------------------------------------
local function oscillating()
-- return true if the pattern is empty, stable or oscillating
-- first get current pattern's bounding box
local pbox = g.getrect()
if #pbox == 0 then
g.show("All cells are dead.")
return true
end
local h = g.hash(pbox)
-- determine where to insert h into hashlist
local pos = 1
local listlen = #hashlist
while pos <= listlen do
if h > hashlist[pos] then
pos = pos + 1
elseif h < hashlist[pos] then
-- shorten lists and append info below
for i = 1, listlen - pos + 1 do
table.remove(hashlist)
table.remove(genlist)
table.remove(poplist)
table.remove(boxlist)
end
break
else
-- h == hashlist[pos] so pattern is probably oscillating, but just in
-- case this is a hash collision we also compare pop count and box size
local rect = boxlist[pos]
local population3
if tonumber(g.getpop()) == poplist[pos] and pbox[3] == rect[3] and pbox[4] == rect[4] then
local period = tonumber(g.getgen()) - genlist[pos]
local population3 = tonumber(g.getpop())
if hasB0notS8 and (period % 2) > 0 and
pbox[1] == rect[1] and pbox[2] == rect[2] and
pbox[3] == rect[3] and pbox[4] == rect[4] then
-- ignore this hash value because B0-and-not-S8 rules are
-- emulated by using different rules for odd and even gens,
-- so it's possible to have identical patterns at gen G and
-- gen G+p if p is odd
return false
end
if pbox[1] == rect[1] and pbox[2] == rect[2] and
pbox[3] == rect[3] and pbox[4] == rect[4] then
-- pattern hasn't moved
if period == 1 then
population2 = tonumber(g.getpop())
g.show("Still life detected (cells = "..population2..")")
else
g.show("Oscillator detected (period = "..period..", systematic name "..smallestphase.."P"..period..")")
end
else
local deltax = math.abs(rect[1] - pbox[1])
local deltay = math.abs(rect[2] - pbox[2])
show_spaceship_speed(period, deltax, deltay, smallestphase)
return true
end
else
-- look at next matching hash value or insert if no more
pos = pos + 1
end
end
end
-- store hash/gen/pop/box info at same position in various lists
table.insert(hashlist, pos, h)
table.insert(genlist, pos, tonumber(g.getgen()))
table.insert(poplist, pos, tonumber(g.getpop()))
table.insert(t, pos, tonumber(g.getpop()))
table.insert(boxlist, pos, pbox)
table.sort(t)
smallestphase = t[1]
return false
end
----------------------------------------------------------------------
local function fit_if_not_visible()
-- fit pattern in viewport if not empty and not completely visible
local r = g.getrect()
if #r > 0 and not g.visrect(r) then g.fit() end
end
----------------------------------------------------------------------
g.show("Checking for oscillation... (hit escape to abort)")
local oldsecs = os.clock()
while not oscillating() do
g.run(1)
local newsecs = os.clock()
if newsecs - oldsecs >= 1.0 then -- show pattern every second
oldsecs = newsecs
fit_if_not_visible()
g.update()
end
end
fit_if_not_visible()
Thanks! But there's another curiosity: B2ein3cijn4cnrwy5cnq6e/S1c2-ai3acny4anqy5c6ek8 and B37/S2-i34q are both Life-like isotropic non-totalistic rules with two kinds of engineered spaceships respectively in the golly pattern collection, yet they are in different folders and shown with different number of pattern files.dvgrn wrote: ↑January 19th, 2020, 7:08 pmThanks! See, that's why other people should be cleaning up and commenting patterns for the collection. I try to do as much as I can quickly, and just end up making silly mistakes.
Don't know how that one happened exactly. I distinctly remember lining up the right-side spaceships and rakes to make the output gliders cancel out nicely, but now of course I can't find that version of the pattern anywhere. I'll check in a remake:
Code: Select all
#N b2ein-spaceships-and-rakes.rle #C #C Left: small fast Orthogonoid by AforAmpere, 17 April 2019 #C Speed is 48c/3066, or slightly faster than C/64 (~C/63.87). #C http://www.conwaylife.com/forums/viewtopic.php?p=75164#p75164 #C #C Right, top to bottom: small spaceships and rakes by Luka Okanishi; #C see http://www.conwaylife.com/forums/viewtopic.php?p=75667#p75667 ...