Small growing seeds

For discussion of other cellular automata.
Post Reply
fluffykitty
Posts: 1175
Joined: June 14th, 2014, 5:03 pm
Contact:

Small growing seeds

Post by fluffykitty » January 2nd, 2017, 2:00 pm

Previous discussion is here
This thread is for finding rules which produce large patterns from small seeds. Github repo here.
I think 4-state VN or 3-state Moore will reach 1 million cells. Anyways, post any record-breaking patterns here!

Rocknlol
Posts: 125
Joined: April 15th, 2012, 9:06 am

Re: Small growing seeds

Post by Rocknlol » January 11th, 2017, 8:15 pm

Here's a rule optimized for 3-cell seed growth. The largest-growing 3-cell and 4-cell seeds I've looked at in this rule both have had a final population of 74249.

Code: Select all

@RULE Growth3

@TABLE

n_states:3
neighborhood:vonNeumann
symmetries:rotate4reflect

var a={1,2}
var b=a
var c=a
var d=a
var e={0,1}

0,0,0,e,1,2
0,0,0,a,2,a
0,0,1,0,1,2
0,0,a,0,2,1
0,0,a,1,a,2
0,1,1,1,1,2
0,1,a,1,2,a
0,a,2,2,2,a
1,0,0,0,a,0
1,0,0,1,1,0
1,0,1,0,1,2
1,0,2,1,2,0
1,1,1,1,2,0
1,1,2,2,2,2
2,0,0,0,1,1
2,0,1,1,1,0
2,e,2,1,2,1

Code: Select all

x = 9, y = 9, rule = Growth3
A4$4.A4$8.A!

Code: Select all

x = 9, y = 9, rule = Growth3
A2$6.B2$4.A4$8.A!
I'm also attaching the (very crude!) scripts I made to search for 3 and 4-cell seeds:

Code: Select all

import golly as g

minpop = 200
maxpop = 1000000
genlength = 10240
rule = g.getrule()

for i in range(1,1025):
  g.open(g.getdir('rules') + '\\3_cell_seeds\\' + str(i) + '.rle')
  g.setrule(rule)
  g.run(genlength/5)
  if int(g.getpop()) < maxpop:	
    g.run(genlength/5)
    if int(g.getpop()) < maxpop:
      g.run(genlength/5)
      if int(g.getpop()) < maxpop:
        g.run(genlength/5)
        if int(g.getpop()) < maxpop:
          popone = int(g.getpop())
          g.run(genlength/5)
          poptwo = int(g.getpop())
      popstring = g.getpop()
      g.reset()
      if int(popstring) > minpop and poptwo - popone < genlength/5 and int(popstring) < maxpop:
        g.save(g.getdir('rules') +  '\\seeds\\' + popstring + '.rle', 'rle', False)

Code: Select all

import golly as g
		
popone = 0
poptwo = 0

minpop = 200
maxpop = 1000000
genlength = 10240

for i in range(0,255):
  for j in range(i+1,255):
    for k in range(j+1,255):
      for l in range(k+1,255):
        g.setcell(i%16,i/16,1)
        g.setcell(j%16,j/16,1)
        g.setcell(k%16,k/16,1)  
        g.setcell(l%16,l/16,1)
        g.run(genlength/5)
        if int(g.getpop()) < maxpop:	
          g.run(genlength/5)
          if int(g.getpop()) < maxpop:
           g.run(genlength/5)
           if int(g.getpop()) < maxpop:
             g.run(genlength/5)
             if int(g.getpop()) < maxpop:
               popone = int(g.getpop())
               g.run(genlength/5)
               poptwo = int(g.getpop())
        popstring = g.getpop()
        g.reset()
        if int(popstring) < maxpop and int(popstring) > minpop and poptwo - popone < genlength/5:
          g.save(g.getdir('rules') + '\\seeds\\' + popstring + '.rle', 'rle', False)
        g.setcell(i%16,i/16,0)
        g.setcell(j%16,j/16,0)
        g.setcell(k%16,k/16,0)
        g.setcell(l%16,l/16,0)
The 3-cell seed script runs through a pregenerated list of 1024 seeds (every valid seed that only has state cells). It runs each seed for a time, periodically checking to see if it has exceeded a maximum population limit. If by the end it hasn't, is above a minimum population limit, and isn't still growing, the seed is saved with the final population as its name.

The 4-cell seed script is similar to the 3-cell seed one, except it just runs through every possible combination of cell positions. This means that most of the runs are redundant, and that combined with the higher possible number of seeds means that the 4-cell script is much, much slower than the 3-cell one.

To run the 4-cell script, create a folder called "seeds" in the rules directory. To run the 3-cell script, create the seeds folder and extract all the seeds in the attachment below to a folder called "3_cell_seeds" in the rules directory.
Attachments
3_cell_seeds.zip
(164.1 KiB) Downloaded 183 times

fluffykitty
Posts: 1175
Joined: June 14th, 2014, 5:03 pm
Contact:

Re: Small growing seeds

Post by fluffykitty » January 16th, 2017, 12:17 pm

Added. Also, Growth2 no longer holds any records.

EDIT: Uhh...are you using Windows? On my (Mac) laptop, it's spewing a large number of seeds into my rules folder.

Rocknlol
Posts: 125
Joined: April 15th, 2012, 9:06 am

Re: Small growing seeds

Post by Rocknlol » January 22nd, 2017, 3:22 pm

fluffykitty wrote:Uhh...are you using Windows? On my (Mac) laptop, it's spewing a large number of seeds into my rules folder.
Yes, I'm using WIndows, so there might be some odd behavior on Macs although I don't know how that would be. It's saving seeds in the rules folder instead of the seeds folder in the rules folder?

User avatar
BlinkerSpawn
Posts: 1992
Joined: November 8th, 2014, 8:48 pm
Location: Getting a snacker from R-Bee's

Re: Small growing seeds

Post by BlinkerSpawn » January 22nd, 2017, 4:05 pm

Did you create the seeds folder and the script can't find it or did you not create the seeds folder?
LifeWiki: Like Wikipedia but with more spaceships. [citation needed]

Image

fluffykitty
Posts: 1175
Joined: June 14th, 2014, 5:03 pm
Contact:

Re: Small growing seeds

Post by fluffykitty » January 22nd, 2017, 9:25 pm

I made a seeds folder in my rules folder and I have a bunch of files like "\seeds\201.rle".

User avatar
BlinkerSpawn
Posts: 1992
Joined: November 8th, 2014, 8:48 pm
Location: Getting a snacker from R-Bee's

Re: Small growing seeds

Post by BlinkerSpawn » January 22nd, 2017, 9:38 pm

fluffykitty wrote:I made a seeds folder in my rules folder and I have a bunch of files like "\seeds\201.rle".
So these are in your seeds folder?
Can you post (or maybe PM to Rocknlol since I haven't dealt with this script) a screenshot of your seed situation?
LifeWiki: Like Wikipedia but with more spaceships. [citation needed]

Image

Rocknlol
Posts: 125
Joined: April 15th, 2012, 9:06 am

Re: Small growing seeds

Post by Rocknlol » January 23rd, 2017, 1:01 am

If all of those seeds are in the seeds folder then the script is working as intended.

If the number of seeds that the script creates is starting to becoming overwhelming, then you can raise the "minpop" variable and the smaller seeds won't be saved.

fluffykitty
Posts: 1175
Joined: June 14th, 2014, 5:03 pm
Contact:

Re: Small growing seeds

Post by fluffykitty » January 23rd, 2017, 11:58 am

fluffykitty wrote:I made a seeds folder in my rules folder and I have a bunch of files like "\seeds\201.rle".
...In my rules folder.

Rocknlol
Posts: 125
Joined: April 15th, 2012, 9:06 am

Re: Small growing seeds

Post by Rocknlol » January 23rd, 2017, 1:46 pm

Okay, in that case I think I know what the problem is.

Try these scripts:

Code: Select all

import golly as g

minpop = 200
maxpop = 1000000
genlength = 10240
rule = g.getrule()

for i in range(1,1025):
  g.open(g.getdir('rules') + '/3_cell_seeds/' + str(i) + '.rle')
  g.setrule(rule)
  g.run(genlength/5)
  if int(g.getpop()) < maxpop:   
    g.run(genlength/5)
    if int(g.getpop()) < maxpop:
      g.run(genlength/5)
      if int(g.getpop()) < maxpop:
        g.run(genlength/5)
        if int(g.getpop()) < maxpop:
          popone = int(g.getpop())
          g.run(genlength/5)
          poptwo = int(g.getpop())
      popstring = g.getpop()
      g.reset()
      if int(popstring) > minpop and poptwo - popone < genlength/5 and int(popstring) < maxpop:
        g.save(g.getdir('rules') +  '/seeds/' + popstring + '.rle', 'rle', False)

Code: Select all

import golly as g
      
popone = 0
poptwo = 0

minpop = 200
maxpop = 1000000
genlength = 10240

for i in range(0,255):
  for j in range(i+1,255):
    for k in range(j+1,255):
      for l in range(k+1,255):
        g.setcell(i%16,i/16,1)
        g.setcell(j%16,j/16,1)
        g.setcell(k%16,k/16,1)  
        g.setcell(l%16,l/16,1)
        g.run(genlength/5)
        if int(g.getpop()) < maxpop:   
          g.run(genlength/5)
          if int(g.getpop()) < maxpop:
           g.run(genlength/5)
           if int(g.getpop()) < maxpop:
             g.run(genlength/5)
             if int(g.getpop()) < maxpop:
               popone = int(g.getpop())
               g.run(genlength/5)
               poptwo = int(g.getpop())
        popstring = g.getpop()
        g.reset()
        if int(popstring) < maxpop and int(popstring) > minpop and poptwo - popone < genlength/5:
          g.save(g.getdir('rules') + '/seeds/' + popstring + '.rle', 'rle', False)
        g.setcell(i%16,i/16,0)
        g.setcell(j%16,j/16,0)
        g.setcell(k%16,k/16,0)
        g.setcell(l%16,l/16,0)

Post Reply