I was running c/3 with pop 50 and had planned to run until it hit 60 GB but then something wacky happened: key gen 00 just kept going with only very, very slowly growing memory.
It got me thinking about another really slimy way to reach exhaustion, namely that a very sloppy density argument can show there is some ultimate height limit and so if you run a search sufficient long you're guaranteed to find everything anyway.
My best efforts towards this so far produce a limit of 118 rows in the pop 50 phase, namely I believe I can show there cannot be a pop 50 or less ship 119 rows or longer (in the pop 50 phase).
Let's imagine the 3 generations placed left to right and the rows labelled like:
Code: Select all
C-1
B0 C0
A1 B1 C1
A2 B2 C2
A3 B3 C3
...
A119 B119 C119
B120 C120
C121
Here A1-A119 are the key generation. That could spread as far as B0 or B120 in the next generation and as far as C-1 to C121 in the next generation. The C rows' futures wrap around to A so e.g. C1's future is A2.
If we divide the A rows into 17 chunks of 7 rows each, as there are only 50 cells, one of these chunks gets only 2 cells (or fewer!). Let's call that AK through A(K+6):
Code: Select all
AK BK CK
A(K+1) B(K+1) C(K+1)
A(K+2) B(K+2) C(K+2)
A(K+3) B(K+3) C(K+3)
A(K+4) B(K+4) C(K+4)
A(K+5) B(K+5) C(K+5)
A(K+6) B(K+6) C(K+6)
The neighborhoods of all living cells in A(K+1) to A(K+5) are contained in AK to A(K+6) which only have at most one other live cell so no such cell can survive. Similarly the neighborhoods of all dead cells in A(K+1) to A(K+5) can have at most two live cells so no such cell can be born. This gives us B(K+1) to B(K+5) all zero. And then similarly C(K+2) to C(K+4) are all zero.
Code: Select all
AK BK CK
A(K+1) 0 C(K+1)
A(K+2) 0 0
A(K+3) 0 0
A(K+4) 0 0
A(K+5) 0 C(K+5)
A(K+6) B(K+6) C(K+6)
Now C(K+2) to C(K+4) all zero forces the future of C(K+3) to be zero (which is A(K+4)):
Code: Select all
AK BK CK
A(K+1) 0 C(K+1)
A(K+2) 0 0
A(K+3) 0 0
0 0 0
A(K+5) 0 C(K+5)
A(K+6) B(K+6) C(K+6)
If A(K+3) were zero we'd have 6 consecutive generations of zero: A(K+3), B(K+3), C(K+3), A(K+4), B(K+4), C(K+4). Similarly if A(K+5) were zero (starting at B(K+4)). We've only got two cells to place in A so that's it:
Code: Select all
0 BK CK
0 0 C(K+1)
0 0 0
(1 cell) 0 0
0 0 0
(1 cell) 0 C(K+5)
0 B(K+6) C(K+6)
But now if we lump the single A(K+3) cell in with all rows north of it and the single A(K+5) cell in with all rows south of it they're not actually connected, not even through row A(K+4), not properly and actually not even through an overpop suppression.
Now in what position can a ship be found and how many W rows does a c3-f2b search need to have covered to find it? Of the potential nonzero rows at or before A1, the order is C-1, B0, C0, A1 and whichever is first nonzero gets put in what the search would call gen 0. The cases...
C-1 first nonzero, with Z's marking the 6 W rows of zeros before and after:
Code: Select all
Z Z Z
Z Z Z
C-1 B0
C0 A1 B1
C1 A2 B2
...
C118 A119 B119
C119 B120
C120
C121 Z Z
Z Z Z
Z
This is 379 W rows so any search that completes that many would find A in key gen 00.
B0 first nonzero:
Code: Select all
Z Z Z
Z Z Z
B0 C0 A1
B1 C1 A2
...
B118 C118 A119
B119 C119
B120 C120
C121 Z
Z Z Z
Z Z
This is 377 W rows and A is key gen 2.
C0 first nonzero:
Code: Select all
Z Z Z
Z Z Z
C0 A1 B1
...
C118 A119 B119
C119 B120
C120
C121 Z Z
Z Z Z
Z
This is 376 W rows and A is key gen 1.
A1 first nonzero:
Code: Select all
Z Z Z
Z Z Z
A1 B1 C1
A2 B2 C2
A3 B3 C3
...
A119 B119 C119
B120 C120
C121
Z Z Z
Z Z Z
This is 375 W rows and A is key gen 0.
So combined we need 379 W rows for key gen 0, 376 W rows for key gen 1, and 377 W rows for key gen 2.
Luckily I had run key gen 0 as far as "Completed w_pos 389" before getting bored and killing it so we're covered there. It found the following five pop 50 ships which do not seem to be in jslife-moving:
Code: Select all
#C [[ TRACK 0 -1/3 ]]
x = 30, y = 99, rule = B3/S23
7bo$5b4o$b2ob2o3bo5b3o$b2o2bo5bob2o3bo$o2bo7b2o3bobo$9bo3bo4b2o$18b3o$
16bobo$15b2o$10bo3bo2bo$9b4o$8bo3bo$9bobo2bo$13bo11$9bo$2bo5b4o8bo$bob
o3bo3b2o7b3o$o3bo3bo4bo2b3o5b2o$b2obo5bo5b3o5b2o$6bobo4bo2b2o2bo5bo$8b
o4b2o7b2o$10bo12bo$9bo12bo$23bo11$11bo$10b4o$9bo3b2ob2o$7bo5bo2b2o$5b
3o7bo2bo$b2ob2o3bo9bo$b2o2bo2bo$o2bo13b3o$20bo$22bo$22b3o$20bo3b2ob2o$
21bo2bo2b2o$26bo2bo11$15bo$8bo5b4o$2bob2obobo3bo3b2o$b2ob2o4bo3bo4bo$o
2bobob2obo5bo$bo10bobo5b2o$14bo3b2obo4b2o$16bo6b2ob2o$15bo7b2o3bo$23b
2o11$16bo$14b3ob3o$13b2o6bo$8bo3bo2bo3b2o$b2ob3ob3o$b2o4bo2bo$o2bob2o
5bo3bo$12bo3b3o$12bo2bo2b2ob2o$13b2o3bo2b2o$20bo2bo!
I have started key gen 1 and it's to w_pos 200 or so, enough to find a ship even 60+ rows tall in any generation. I highly doubt it will find anything new after this but of course I will let it run for completeness. So far it has found these two additional ships:
Code: Select all
#C [[ TRACK 0 -1/3 ]]
x = 32, y = 33, rule = B3/S23
10b2obo$7b2ob2ob2o$7bo2bobo2bo$b2o4b2o5bo$b2ob2o$o3b2o$4b2o2b3o$10bobo
b3o$13bobobo$9bobobo2bo$8bo4bo$8bo$10bob2o$8b2o11$17b2o$2bob2ob3o5b2ob
ob2o$b2ob2o4b2obo4bo2bo$o2bobo2bo3b2o6bobo$bo5bo3bo3bo7b2o$23b2ob2o$
23b2o2b4o$26bo4bo$29b2o!
I'll be back after finishing key gens 1 and 2. Stay tuned.