NewLifeCA discussion thread

For general discussion about Conway's Game of Life.
Post Reply
User avatar
dvgrn
Moderator
Posts: 8931
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

NewLifeCA discussion thread

Post by dvgrn » May 8th, 2022, 8:45 am

This is a secondary thread associated with the locked NewLifeCA Back Issues archive thread. See the first post of that thread for an explanation of what the NewLifeCA group is.

NewLifeCA discussion and comments are set up here as a separate thread, just to keep the Back Issues thread from getting cluttered with things that aren't actually back issues.

User avatar
pcallahan
Posts: 745
Joined: April 26th, 2013, 1:04 pm

Re: NewLifeCA discussion thread

Post by pcallahan » May 10th, 2022, 2:19 pm

I completely forgot about my self-destructing switch engine pair referenced in a back issue. Thanks for the reminder. I'm surprised I had the tools compiled and running to find it in December 2019. I wonder if a similar approach makes a much longer methuselah.

Another methuselah-ish question came to mind recently. Are there small patterns that run chaotically for a long time, appearing to be methuselahs but then generate an infinite growth switch engine instead of stabilizing? I'm sure there are some depending on the definition of "small", "chaotically", and "long", but usually if a switch engine appears, it shows up pretty soon. What's the longest it takes for one to show up? (excluding patterns designed to do this)

User avatar
dvgrn
Moderator
Posts: 8931
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: NewLifeCA discussion thread

Post by dvgrn » May 10th, 2022, 3:11 pm

pcallahan wrote:
May 10th, 2022, 2:19 pm
Another methuselah-ish question came to mind recently. Are there small patterns that run chaotically for a long time, appearing to be methuselahs but then generate an infinite growth switch engine instead of stabilizing?
Unfortunately our main source of smallish methuselah patterns these days is apgsearch -- but if I remember correctly, apgsearch doesn't count a pattern as a methuselah if it ends with infinite population growth.

We could certainly make a hacked version of apgsearch that went back and checked every GPSE and BLSE output, and recorded the time that the population mod 1152 started increasing linearly.

Even if standard apgsearch started collecting these things, presumably the record-setting methuselah-ish pattern of that type would tend to trail the current 16x16 methuselah record-setter by several thousand ticks, just due to the small proportion of 16x16 patterns produce infinite growth. So... I'm thinking it might not be too surprising if someone could come up with a MEIG (Methuselah Ending with Infinite Growth) with a non-boring lifespan in the 30,000s, or maybe even in the 40,000s -- but a 50,000+ lifespan would be surprising and impressive.

igblan
Posts: 28
Joined: September 13th, 2009, 9:42 am

Re: NewLifeCA discussion thread

Post by igblan » May 11th, 2022, 3:47 am

Back into the fray. Dave Greene recommended I post this stuff here.

I was inspired by the D8_4 collidoscopes in the Methuselah-ish Symmetric Soups thread, mentioned by Dave in a recent NewLifeCA post.

Yesterday and today I've been investigating (watching) what happens if you run the 64m-tick pattern for a bit, then replace the centre with a randomly-generated D8_4-symmetric or asymmetric pattern.

Glossary:
Bihivite: The crystal sometimes formed by an even-period glider stream, with two beehives per layer.
Drill-bit: The site where the leading glider in a stream interacts with debris.
Drilling: The process whereby the drill-bit pushes downstream through debris or by bihivite erosion.
Silting: The process whereby the drill-bit is pushed upstream by bihivite accretion or a detonation.
River: A pair of parallel streams.

The symmetric patterns unsurprisingly resemble the patterns in the D8_4 soup collection. Drilling appears to outpace silting in the long run. Even if a stream silts up a long way from the centre, the drill-bit always seems to find its way back.

The asymmetric patterns are much more interesting. The two streams in a river occasionally silt each other up. This is enough to reverse the long-term trend, and the river accumulates more and more silt, while the drill-bit slowly moves upstream. The initial asymmetry in the centre slowly creeps up the rivers with the silting.

But if one stream gets blocked by some kind of eater, the other resumes its net drilling. Sometimes it drills right though the centre and through the opposite arm. If it meets another stream head-on, their gliders simply cancel. But if that stream's partner is still active, silt is occasionally thrown in the path of the head-on gliders, and they resume drilling, only to meet head-on again in a different place.

If two offset streams meet (ie each is the 180-degree rotation of the other), they battle it out head to head (this is where I am with my current run, 124m ticks in, with all but two streams quiescent). If the drill-bits pass each other, one will soon silt up the other. The current site of the battle is almost certainly following a symmetric random walk.

Here is some code.

Code: Select all

-- Experiments with randomly generated symmetric and asymmetric
-- D8_4-like collidoscopes.

g = golly()

g.new("D48")

g.setcursor("Move")

g.setrule("b3/s23")
g.setalgo("HashLife")
g.setbase(2)
g.setstep(6)
g.setmag(0)

g.autoupdate(true)

local d84 = g.parse(
[[bo4bobo2bo8bo2bobo4bo$2o2bo2bobob2obo2bob2obobo2bo2b2o$3b2ob4obo2bo2bo
2bob4ob2o$2bo2bo5b2ob4ob2o5bo2bo$b2obobo3bob2ob2ob2obo3bobob2o$3bo9bob
2obo9bo$obobobo3bob3o2b3obo3bobobobo$b2o6bo4bo2bo4bo6b2o$obo5b5obo2bob
5o5bobo$b2o4b7ob2ob7o4b2o$4bobob2ob2o6b2ob2obobo$4o4b5ob4ob5o4b4o$bob
2obob4o2b4o2b4obob2obo$4b3o2bo3b2o2b2o3bo2b3o$b3o2b3o2b10o2b3o2b3o$3b
3o3bob2ob4ob2obo3b3o$3b3o3bob2ob4ob2obo3b3o$b3o2b3o2b10o2b3o2b3o$4b3o
2bo3b2o2b2o3bo2b3o$bob2obob4o2b4o2b4obob2obo$4o4b5ob4ob5o4b4o$4bobob2o
b2o6b2ob2obobo$b2o4b7ob2ob7o4b2o$obo5b5obo2bob5o5bobo$b2o6bo4bo2bo4bo
6b2o$obobobo3bob3o2b3obo3bobobobo$3bo9bob2obo9bo$b2obobo3bob2ob2ob2obo
3bobob2o$2bo2bo5b2ob4ob2o5bo2bo$3b2ob4obo2bo2bo2bob4ob2o$2o2bo2bobob2o
bo2bob2obobo2bo2b2o$bo4bobo2bo8bo2bobo4bo!]], -16, -16)

g.putcells(d84)

local function randfill(percentage)
  local rect = g.getselrect()
  local cells = {}
  for x = rect[1], rect[1] + rect[3] - 1 do
    for y = rect[2], rect[2] + rect[4] - 1 do
      if 100 * math.random() < percentage then
        table.insert(cells, x)
        table.insert(cells, y)
      end
    end
  end
  g.putcells(cells)
end

local symmetric = false

if symmetric then

  ------------------------ Symmetric experiments -----------------------

  local initrun = 2048
  local soupradius = 64

  -- math.randomseed(12345678) -- 10m bihivite inhibitor
  -- math.randomseed(723894987) -- ?m Jedi
  -- math.randomseed(4715627838947) -- 3m Jedi
  -- math.randomseed(167283476) -- 11m bihivite inhibitor

  math.randomseed(46456387162) -- 13m inline eater

  g.run(initrun)

  g.select{-soupradius, -soupradius, 2 * soupradius, 2 * soupradius}
  g.clear(0)

  rect = {0, 0, soupradius, soupradius}
  g.select(rect)
  randfill(25)
  g.select{}
  cells = g.getcells(rect)
  g.putcells(cells, 0, 0, 0, 1, 1, 0, "xor") -- Reflect in x=y
  cells = g.getcells(rect)
  g.putcells(cells, -1, 0, 0, -1, 1, 0)   -- Rotate
  g.putcells(cells, -1, -1, -1, 0, 0, -1) -- Rotate
  g.putcells(cells, 0, -1, 0, 1, -1, 0)   -- Rotate

else

  ----------------------- Asymmetric experiments -----------------------

  local initrun = 2048
  local soupradius = 16

--  math.randomseed(46456387162) -- 83m 6 blocked streams, 2 streams colliding
--  math.randomseed(266785872) -- 81m 4 blocked streams, 1 dead branch, 1 neutered branch
  math.randomseed(177416229) -- 124m and counting, 1 dead branch, 4 blocked streams, 2 stream battling

  g.run(initrun)

  g.select{-soupradius, -soupradius, 2 * soupradius, 2 * soupradius}
  g.clear(0)
  randfill(25)
  g.select{}

end
Cheers, Paul

Edit: PS. You can run these patterns zoomed out and sped up quite a bit (eg zoom 2^6, step 2^10), and still see what's going on. Active drill sites tend to throw off gliders, so you can get an idea of where the drill-bits are, and whch branches might've become quiescent.

Edit: PPS. 0849 Zulu: The last experiment above stabilized after 202m ticks, with the battling streams eventually blocked by eaters. Coffee time, then I might try windmill symmetry for the random centre.

igblan
Posts: 28
Joined: September 13th, 2009, 9:42 am

Re: NewLifeCA discussion thread

Post by igblan » May 14th, 2022, 6:53 pm

Very interesting dynamics in the asymmetric branch with

Code: Select all

math.randomseed(41159898)
129m ticks to stability. But fairly early on an upstream glider on the NE branch collides with the "flare" sent out by the ark, neither destroying nor neutering it, but causing a "lump" to appear which silts up the river, and later the SW branch produces a stream which drills all the way through to that lump. On top of that, another lump is produced by a circumferenatial xWSS from one of the other branches in roughly the same place.

I might write a script to survey the possible interactions between this ark and upstream gliders which just shave past the downstream gliders. I'd seen killing and neutering interactions before, but never one that left the ark alive and potent.

Cheers, Paul

Post Reply