amling search program principles discussion / brain dump

For scripts to aid with computation or simulation in cellular automata.
amling
Posts: 1154
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling » June 13th, 2025, 12:15 am

Sylvani wrote:
June 12th, 2025, 5:48 pm
Oops, I meant to say "Agarships" (like grayships, etc.). Anyways, I might have figured out how puffers work.
Again, same engines, different boundary conditions. There are just way too many ways to set things up depending on what you have and what you're hoping to find. No individual search starts with a goal as wide as "I wish I had an agar ship at this velocity in this rule".

Many times agar ship projects have started with some partial that had a big patch of agar and got me thinking, especially if it included a thin edge of some sort (i.e. a seam between the agar and vacuum that is thin and repeating). Some cases that have started with nothing were started with LGOL double wrapped searches to find a repeating edge. Some started from a guess one way or another for a thin "joint" that could be used to connect repeating components to make an edge.

In general if you have a specific result (of mine) and you want to know how it was done I can probably tell you, either from guessing from the structure of the object, digging in my many saved notes and log files, or even just remembering directly. I don't usually write up blow by blow accounts of the searches involved for the forum since it just seems tedious and unlikely to be useful.
Sylvani wrote:
June 12th, 2025, 5:48 pm
What I'd like the most is an easier way to construct grids. I think a Golly script would work for this.
I mostly have used copy/paste out of golly with a one-off script to decode RLE. There was a lua script for golly that Sokwe wrote somewhere way up thread. You might also choose to incorporate `rlife grid-tool` (especially `to-uwi`, `from-uwi`, `cw`, and `ccw` subcommands) and of course there is no substitute for editor skills (especially techniques like what vim calls "block" mode).

amling
Posts: 1154
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling » July 14th, 2025, 7:35 pm

Sylvani wrote:
June 12th, 2025, 5:48 pm
Oops, I meant to say "Agarships"
I decided to try to find a Day & Night checkerboard agarship as a demo of some of the various search structures that can be used to find parts of agar ships. 2c/4 seemed the simplest/smallest choice for compatible velocity so I went for that.

I have cut out a great deal of unsuccessful searches and slightly editted for simplicity in some cases, but these notes should be complete (as in include all inputs and include every search on the winning path to the final result). I should stress that nothing about any of this represents any one true way to do it and I am certain many of these searches could be greatly, greatly simplified.



Often with small periods we've been lucky and able to find a level front so I thought I would try for that first.

First thing's first though, we need a definition of the checkerboard agar to use for the various LLSSS configuration along the way:

Code: Select all

$ cat cb.agar
{
    "vu": [2, 0, 0],
    "vv": [0, 0, 1],
    "vw": [1, 1, 0],
    "cells": [
        [[0, 0, 0], true],
        [[1, 0, 0], false],
    ],
}
I started with running 2c/4 b2f searches with symmetric edges on both sides, starting from checkerboard and hoping to find zeros. Both odd and gse edges are valid, but my first stroke of luck came from GSE/GSE mid_steps=04, run as...

Code: Select all

$ rlife llsss-recentering-wao --rule 'B3678/S34678' 2c4-b2f '@agar:@cb.agar' --wao-left-edge-errors --wao-right-edge-errors --left-edge gse --right-edge gse --partials srv2 04
...
20250714 11:21:28 [INFO] LlsssMonitorSeamRipperV2(4, 8) (choke width 1):
20250714 11:21:28 [INFO] | LLL RRR |         |         |         |
20250714 11:21:28 [INFO] | .*.*.*. | ZZZZZZZ | LLL RRR |         |
20250714 11:21:28 [INFO] | *.*.*.* | *.*.*.* | *.*.*.* | ZZZZZZZ |
20250714 11:21:28 [INFO] | .*.*..* | .*.*.*. | .*.*.*. | .*.*.*. |
20250714 11:21:28 [INFO] | *.*.... | *.*..*. | *.**.*. | *.*.*.* |
20250714 11:21:28 [INFO] | .*.***. | .*..**. | .****.. | .*.*..* |
20250714 11:21:28 [INFO] | **...** | **..*** | *..**.* | *.*...* |
20250714 11:21:28 [INFO] | **.**.. | ***...* | **.*.** | **...** |
20250714 11:21:28 [INFO] | ......* | ....**. | **..... | ***.**. |
20250714 11:21:28 [INFO] | .....*. | ....... | .....*. | ......* |
20250714 11:21:28 [INFO] | ......* | ......* | ......* | ....*.. |
20250714 11:21:28 [INFO] | .*...** | *....*. | ....**. | ....**. |
20250714 11:21:28 [INFO] | .*...** | ..*.*** | *..*.** | .*....* |
20250714 11:21:28 [INFO] | .*...*. | ***...* | *.*..** | ...*.** |
20250714 11:21:28 [INFO] | **..*** | **.**.* | *..*..* | **.*.*. |
20250714 11:21:28 [INFO] | .***.** | *..*..* | ***.*** | ***..*. |
20250714 11:21:28 [INFO] | **.*..* | ******* | *..**** | .**.**. |
20250714 11:21:28 [INFO] | ***.... | **.*... | ****.*. | **.*.** |
20250714 11:21:28 [INFO] | ***.... | ***.... | ***.... | ***.... |
20250714 11:21:28 [INFO] | **..... | **..... | ***.... | ***.... |
20250714 11:21:28 [INFO] | ...*... | ....... | **..... | **..... |
20250714 11:21:28 [INFO] | ....... | ..*.*.. | ...*... | ....... |
20250714 11:21:28 [INFO] | ..***.. | ...*... | ....... | ..*.*.. |
20250714 11:21:28 [INFO] | ..*.*.. | ..***.. | ..***.. | ...*... |
20250714 11:21:28 [INFO] | ...*... | ..***.. | ..*.*.. | ..***.. |
20250714 11:21:28 [INFO] | ...*... | ....... | ...*... | ..***.. |
20250714 11:21:28 [INFO] | ....... | ....... | ...*... | ....... |
20250714 11:21:28 [INFO] | ...*... | ..***.. | ....... | ....... |
20250714 11:21:28 [INFO] | ..***.. | ....... | ...*... | ..***.. |
20250714 11:21:28 [INFO] |         |         | ..***.. | ....... |
...
I had tried various combinations of edges and mid_steps with no great success (no zeros results), but in this partial I spotted, something funny had happened: it was not only very thin, but it had reduced to plain c/2 for many, many rows. It also split nicely higher up making me more hopeful about connecting it up later.

In the end I stripped it far back to some of its first c/2 rows, and rephased it left/right to plan to solve two of them together at a time in the space they'd be allocated, with even symmetry (the input is just one but it will be doubled by the symmetric edge):

Code: Select all

$ cat x1b2e.in
| uuuuuuuuuuuu |              |
| ....****.... | ....****.... |
| .....**..... | ....****.... |
I had tried other variants first with no luck (one at a time, two at a time asymmetric). As the structure of the roots (no repeats) enforced an effective width I ran this with mid_steps=XX and it solved:

Code: Select all

$ rlife llsss-recentering --rule 'B3678/S34678' c2-b2f --left-edge even x1b2e.in --partials srv2 XX
...
20250714 11:31:26 [INFO] End [thinnest] ("LlsssEndsAgar", "zero"):
20250714 11:31:26 [INFO] | ....****.... | uuuuuuuuuuuu |
20250714 11:31:26 [INFO] | ....****.... | ....****.... |
20250714 11:31:26 [INFO] | .....**..... | .....**..... |
20250714 11:31:26 [INFO] | .....**..... | ............ |
20250714 11:31:26 [INFO] | ...**.**.... | ....*..*.... |
20250714 11:31:26 [INFO] | ...*..**.... | ..***.**.... |
20250714 11:31:26 [INFO] | ..*...*..... | ...*..*..... |
20250714 11:31:26 [INFO] | ....*.*..... | ...*.*...... |
20250714 11:31:26 [INFO] | ..*......... | **...*...... |
20250714 11:31:26 [INFO] | **....*..*.. | .......**... |
20250714 11:31:26 [INFO] | .......**... | ***......... |
20250714 11:31:26 [INFO] | ..**..****.. | **...*.***.. |
20250714 11:31:26 [INFO] | **...****... | ..*...**.... |
20250714 11:31:26 [INFO] | *******.*... | **.******... |
20250714 11:31:26 [INFO] | **.*****.... | ..******.... |
20250714 11:31:26 [INFO] | ..*.*....... | ****..*..... |
20250714 11:31:26 [INFO] | ...**....... | ...***...... |
20250714 11:31:26 [INFO] | ....*..**... | ..**....**.. |
20250714 11:31:26 [INFO] | ..****..**.. | ....**..*... |
20250714 11:31:26 [INFO] | ..*.*.**.... | ..**.*..*... |
20250714 11:31:26 [INFO] | ***.******.. | ****.****... |
20250714 11:31:26 [INFO] | ..******.... | **.*******.. |
20250714 11:31:26 [INFO] | ***.*****... | **.******... |
20250714 11:31:26 [INFO] | ***.****.... | **.*.**.*... |
20250714 11:31:26 [INFO] | ..**.**..... | ..****.*.... |
20250714 11:31:26 [INFO] | ....**...... | ...****..... |
20250714 11:31:26 [INFO] | ............ | ............ |
20250714 11:31:26 [INFO] | ............ | ............ |
...
Multiplying this up (both in space and in time to 2c/4) and stitching it back in to the original prompt, now we can start wondering about a front corner. Ultimately there is an obviously split so at this point an intermediate picture I had made looked like (this is 2c/4 west):

Code: Select all

$ cat n3.raw
|  LLLuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuABAB |  LLLuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuABAB | LLLuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuABAB  | LLLuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuABAB  |
|  ..............................*...**..*.****.*. |  .............................***.***.*.*..**.*. | ..............................*****.*..**...*.*  | ..............................*****.*..**...*.*  |
|  ..............................*****.*..**...*.* |  ..............................*****.*..**...*.* | ..............................*...**..*.****.*.  | .............................***.***.*.*..**.*.  |
|  ........*...*.....*............*....**.*...*.*. |  ........*.*......*.*...........*......*.*..*.*. | ........*...*.....*...........*.*.*...*.**..*.*  | ........*.*......*.*..........**...*....**..*.*  |
|  ......*******...*.*.*.........*..**.......*.*.* |  ......*.*.**...****..........**.......*.*.*.*.* | ......*******...*.*.*........****..........*.*.  | ......*.*.**...****..........**.*.*....*****.*.  |
|  .....*.***.....****.*...**..**.**......*.*.*.*. |  .....*****.*..*.***....**..**.*..........*.*.*. | .....*.***.....****.*...**..*.*..**....*..*.*.*  | .....*****.*..*.***....**..***.*.*.......**.*.*  |
|  ....*.****....****.....**..*******.*...**.*.*.* |  ....******....****.*.**************...***.*.*.* | ....*.****....****.....**..****.**.....***.*.*.  | ....******....****.*.*********.*......**.*.*.*.  |
|  ....********.*.**.*..**....****.**.....***.*.*. |  ...******.*...***........*****.*......**.*.*.*. | ....********.*.**.*..**....*******.*...**.*.*.*  | ...******.*...***........**********...***.*.*.*  |
|  ....**.**..*.*.**.......**..*.*..**....*..*.*.* |  ...*.***********.....*..*..***.*.*.......**.*.* | ....**.**..*.*.**.......**..**.**......*.*.*.*.  | ...*.***********.....*..*..**.*..........*.*.*.  |
|  ....*******.*****.....***....****..........*.*. |  ....*..*..*.*.**.*.....**....**.*.*....*****.*. | ....*******.*****.....***.....*..**.......*.*.*  | ....*..*..*.*.**.*.....**....**.......*.*.*.*.*  |
|  .....*...**.*.**.*.*....*.....*.*.*...*.**..*.* |  ....*******..*.*.*..*.*.......**...*....**..*.* | .....*...**.*.**.*.*....*......*....**.*...*.*.  | ....*******..*.*.*..*.*........*......*.*..*.*.  |
|  ......****....*.*.**.*........*...**..*.****.*. |  .....**.*.....***..*.........***.***.*.*..**.*. | ......****....*.*.**.*........*****.*..**...*.*  | .....**.*.....***..*..........*****.*..**...*.*  |
|  ......****....*.*.**.*........*****.*..**...*.* |  .....**.*.....***..*..........*****.*..**...*.* | ......****....*.*.**.*........*...**..*.****.*.  | .....**.*.....***..*.........***.***.*.*..**.*.  |
|  .....*...**.*.**.*.*....*......*....**.*...*.*. |  ....*******..*.*.*..*.*........*......*.*..*.*. | .....*...**.*.**.*.*....*.....*.*.*...*.**..*.*  | ....*******..*.*.*..*.*.......**...*....**..*.*  |
|  ....*******.*****.....***.....*..**.......*.*.* |  ....*..*..*.*.**.*.....**....**.......*.*.*.*.* | ....*******.*****.....***....****..........*.*.  | ....*..*..*.*.**.*.....**....**.*.*....*****.*.  |
|  ....**.**..*.*.**.......**..**.**......*.*.*.*. |  ...*.***********.....*..*..**.*..........*.*.*. | ....**.**..*.*.**.......**..*.*..**....*..*.*.*  | ...*.***********.....*..*..***.*.*.......**.*.*  |
|  ....********.*.**.*..**....*******.*...**.*.*.* |  ...******.*...***........**********...***.*.*.* | ....********.*.**.*..**....****.**.....***.*.*.  | ...******.*...***........*****.*......**.*.*.*.  |
|  ....*.****....****.....**..****.**.....***.*.*. |  ....******....****.*.*********.*......**.*.*.*. | ....*.****....****.....**..*******.*...**.*.*.*  | ....******....****.*.**************...***.*.*.*  |
|  .....*.***.....****.*...**..*.*..**....*..*.*.* |  .....*****.*..*.***....**..***.*.*.......**.*.* | .....*.***.....****.*...**..**.**......*.*.*.*.  | .....*****.*..*.***....**..**.*..........*.*.*.  |
|  ......*******...*.*.*........****..........*.*. |  ......*.*.**...****..........**.*.*....*****.*. | ......*******...*.*.*.........*..**.......*.*.*  | ......*.*.**...****..........**.......*.*.*.*.*  |
|  ........*...*.....*...........*.*.*...*.**..*.* |  ........*.*......*.*..........**...*....**..*.* | ........*...*.....*............*....**.*...*.*.  | ........*.*......*.*...........*......*.*..*.*.  |
|  ..............................*...**..*.****.*. |  .............................***.***.*.*..**.*. | ..............................*****.*..**...*.*  | ..............................*****.*..**...*.*  |
|  ..............................*****.*..**...*.* |  ..............................*****.*..**...*.* | ..............................*...**..*.****.*.  | .............................***.***.*.*..**.*.  |
|  ........*...*.....*............*....**.*...*.*. |  ........*.*......*.*...........*......*.*..*.*. | ........*...*.....*...........*.*.*...*.**..*.*  | ........*.*......*.*..........**...*....**..*.*  |
|  ......*******...*.*.*.........*..**.......*.*.* |  ......*.*.**...****..........**.......*.*.*.*.* | ......*******...*.*.*........****..........*.*.  | ......*.*.**...****..........**.*.*....*****.*.  |
|  .....*.***.....****.*...**..**.**......*.*.*.*. |  .....*****.*..*.***....**..**.*..........*.*.*. | .....*.***.....****.*...**..*.*..**....*..*.*.*  | .....*****.*..*.***....**..***.*.*.......**.*.*  |
|  ....*.****....****.....**..*******.*...**.*.*.* |  ....******....****.*.**************...***.*.*.* | ....*.****....****.....**..****.**.....***.*.*.  | ....******....****.*.*********.*......**.*.*.*.  |
|  ....********.*.**.*..**....****.**.....***.*.*. |  ...******.*...***........*****.*......**.*.*.*. | ....********.*.**.*..**....*******.*...**.*.*.*  | ...******.*...***........**********...***.*.*.*  |
|  ....**.**..*.*.**.......**..*.*..**....*..*.*.* |  ...*.***********.....*..*..***.*.*.......**.*.* | ....**.**..*.*.**.......**..**.**......*.*.*.*.  | ...*.***********.....*..*..**.*..........*.*.*.  |
|  ....*******.*****.....***....****..........*.*. |  ....*..*..*.*.**.*.....**....**.*.*....*****.*. | ....*******.*****.....***.....*..**.......*.*.*  | ....*..*..*.*.**.*.....**....**.......*.*.*.*.*  |
|  .....*...**.*.**.*.*....*.....*.*.*...*.**..*.* |  ....*******..*.*.*..*.*.......**...*....**..*.* | .....*...**.*.**.*.*....*......*....**.*...*.*.  | ....*******..*.*.*..*.*........*......*.*..*.*.  |
|  ......****....*.*.**.*........*...**..*.****.*. |  .....**.*.....***..*.........***.***.*.*..**.*. | ......****....*.*.**.*........*****.*..**...*.*  | .....**.*.....***..*..........*****.*..**...*.*  |
|  ......****....*.*.**.*........*****.*..**...*.* |  .....**.*.....***..*..........*****.*..**...*.* | ......****....*.*.**.*........*...**..*.****.*.  | .....**.*.....***..*.........***.***.*.*..**.*.  |
|  .....*...**.*.**.*.*....*......*....**.*...*.*. |  ....*******..*.*.*..*.*........*......*.*..*.*. | .....*...**.*.**.*.*....*.....*.*.*...*.**..*.*  | ....*******..*.*.*..*.*.......**...*....**..*.*  |
|  ....*******.*****.....***.....*..**.......*.*.* |  ....*..*..*.*.**.*.....**....**.......*.*.*.*.* | ....*******.*****.....***....****..........*.*.  | ....*..*..*.*.**.*.....**....**.*.*....*****.*.  |
|  ....**.**..*.*.**.......**..**.**......*.*.*.*. |  ...*.***********.....*..*..**.*..........*.*.*. | ....**.**..*.*.**.......**..*.*..**....*..*.*.*  | ...*.***********.....*..*..***.*.*.......**.*.*  |
|  ....********.*.**.*..**....*******.*...**.*.*.* |  ...******.*...***........**********...***.*.*.* | ....********.*.**.*..**....****.**.....***.*.*.  | ...******.*...***........*****.*......**.*.*.*.  |
|  ....*.****....****.....**..****.**.....***.*.*. |  ....******....****.*.*********.*......**.*.*.*. | ....*.****....****.....**..*******.*...**.*.*.*  | ....******....****.*.**************...***.*.*.*  |
|  .....*.***.....****.*...**..*.*..**....*..*.*.* |  .....*****.*..*.***....**..***.*.*.......**.*.* | .....*.***.....****.*...**..**.**......*.*.*.*.  | .....*****.*..*.***....**..**.*..........*.*.*.  |
|  ......*******...*.*.*........****..........*.*. |  ......*.*.**...****..........**.*.*....*****.*. | ......*******...*.*.*.........*..**.......*.*.*  | ......*.*.**...****..........**.......*.*.*.*.*  |
|  ........*...*.....*..........aaaaaa...bbbbbbbbb |  ........*.*......*.*.........aaaaaa...bbbbbbbbb | ........*...*.....*..........aaaaaa...bbbbbbbbb  | ........*.*......*.*.........aaaaaa...bbbbbbbbb  |
|  .............................aaaaaa...bbbbbbbbb |  .............................aaaaaa...bbbbbbbbb | .............................aaaaaa...bbbbbbbbb  | .............................aaaaaa...bbbbbbbbb  |
|  .............................aaaaaa...bbbbbbbbb |  .............................aaaaaa...bbbbbbbbb | .............................aaaaaa...bbbbbbbbb  | .............................aaaaaa...bbbbbbbbb  |
|  .............................aaaaaa...bbbbbbbbb |  .............................aaaaaa...bbbbbbbbb | .............................aaaaaa...bbbbbbbbb  | .............................aaaaaa...bbbbbbbbb  |
|  .............................aaaaaa...bbbbbbbbb |  .............................aaaaaa...bbbbbbbbb | .............................aaaaaa...bbbbbbbbb  | .............................aaaaaa...bbbbbbbbb  |
The "a"s are the front side which we'll have to solve s2s and the "b"s are the rest of the front corner which we'll have to connect to whatever side we can find.

Replacing the "a"s with "?"s we can just search s2s. I've added pd_lite:2 ends to see if I can get it to reduce to c/2 which is often way easier to solve. When I ran this I saw a decent PD result and when it reached depth 6 I decided to try to solve it in c/2:

Code: Select all

$ rlife llsss-recentering --rule 'B3678/S34678' 2c4-s2s n3a.in --ends bg,pd_lite:2 --top-pad 04 --left-pad 27 --fuzzy-left-edge --right-pad 00 --fuzzy-right-edge 11
...
20250714 12:33:33 [INFO] End LlsssEndsPdLite depth 6:
20250714 12:33:33 [INFO] |  uuuuuuuuuuuuuuuuuuuuuuuuu |  uuuuuuuuuuuuuuuuuuuuuuuuu | uuuuuuuuuuuuuuuuuuuuuuuuu  | uuuuuuuuuuuuuuuuuuuuuuuuu  |
20250714 12:33:33 [INFO] |  *****.....***.....*..**.. |  *.**.*.....**....**...... | *****.....***....****....  | *.**.*.....**....**.*.*..  |
20250714 12:33:33 [INFO] |  .*.**.......**..**.**.... |  ****.....*..*..**.*...... | .*.**.......**..*.*..**..  | ****.....*..*..***.*.*...  |
20250714 12:33:33 [INFO] |  .*.**.*..**....*******.*. |  ..***........**********.. | .*.**.*..**....****.**...  | ..***........*****.*.....  |
20250714 12:33:33 [INFO] |  ..****.....**..****.**... |  ..****.*.*********.*..... | ..****.....**..*******.*.  | ..****.*.**************..  |
20250714 12:33:33 [INFO] |  ...****.*...**..*.*..**.. |  ..*.***....**..***.*.*... | ...****.*...**..**.**....  | ..*.***....**..**.*......  |
20250714 12:33:33 [INFO] |  *...*.*.*........****.... |  ...****..........**.*.... | *...*.*.*.........*..**..  | ...****..........**......  |
20250714 12:33:33 [INFO] |  *.....*............**.... |  .....*.*..........**.*... | *.....*............*.....  | .....*.*..........*......  |
20250714 12:33:33 [INFO] |  .................****.... |  ..................*.*.... | ..................*......  | .................*.*.....  |
20250714 12:33:33 [INFO] |  ...............*..*...... |  ................*........ | ................*.*......  | ...............*.***.....  |
20250714 12:33:33 [INFO] |  .............*...**...... |  ............*..**........ | ............*.*.***......  | .............*.*.*.......  |
20250714 12:33:33 [INFO] |  ...........**.**......... |  ...........**.*.*........ | ...........*.*...........  | ..........**.*.*.*.......  |
20250714 12:33:33 [INFO] |  ...........**..*......... |  ..........***............ | ..........**.**..........  | ..........**.**..........  |
20250714 12:33:33 [INFO] |  ..........*..*........... |  .........**.............. | ..........**..*..........  | .........................  |
20250714 12:33:33 [INFO] |  .........**.*............ |  .........*..**........... | .........**.*............  | .........***.............  |
20250714 12:33:33 [INFO] |  .........***.*........... |  ........*.*.............. | .........***.............  | ........****.............  |
20250714 12:33:33 [INFO] |  .........**.*............ |  ........***.**........... | .........*.*.*...........  | .........***.............  |
20250714 12:33:33 [INFO] |  .........*.*.*........... |  .........*.**............ | ..........*.**...........  | ............**...........  |
20250714 12:33:33 [INFO] |  .......**.*.............. |  .......*.*...*........... | .......*****..**.........  | .......*.***..*..........  |
20250714 12:33:33 [INFO] |  .......*******........... |  ......******.**.......... | .......******.*..........  | ......*******..*.........  |
20250714 12:33:33 [INFO] |  .......*.******.......... |  ......*******............ | .......*.****............  | ......******.............  |
20250714 12:33:33 [INFO] |  ......*..****............ |  .........****............ | ......*..****.*..........  | .........*****...........  |
20250714 12:33:33 [INFO] |  ......*.*****............ |  .....***.***.*........... | ......*.*******..........  | .....***.****............  |
20250714 12:33:33 [INFO] |  ......*******............ |  .....********.*.......... | ......*******............  | .....*******..*..........  |
20250714 12:33:33 [INFO] |  ......**.*******......... |  ......******.*........... | ......**.***..*..........  | ......******.............  |
20250714 12:33:33 [INFO] |  .........***............. |  .........**..*.*......... | .........***...*.........  | .........**..**..........  |
20250714 12:33:33 [INFO] |  .........*.*...*......... |  ........****............. | .........*.***...........  | ........***..............  |
20250714 12:33:33 [INFO] |  .........*.*.*........... |  ........*...*............ | .........*.**............  | ........*..***...........  |
20250714 12:33:33 [INFO] |  ........*................ |  .......**....*........... | ........*................  | .......**....*...........  |
20250714 12:33:33 [INFO] |  .......*******........... |  .......***............... | .......*******...........  | .......***...............  |
20250714 12:33:33 [INFO] |  ....**..*................ |  ....**....***............ | ....**..*................  | ....**....***............  |
20250714 12:33:33 [INFO] |  ....**.**................ |  ...**...*................ | ....**.**................  | ...**...*................  |
20250714 12:33:33 [INFO] |  ....*.***.**............. |  ...*..**.**.............. | ....*.***.**.............  | ...*..**.**..............  |
20250714 12:33:33 [INFO] |  ..*...*.***.............. |  ..**..**.*.*............. | ..*...*.***..............  | ..**..**.*.*.............  |
...
I stripped it all the way back to its last 2c/4 rows and wrote a constraint file to force it to extend c/2 only (with grid-tool pd-map):

Code: Select all

$ cat n3a.x1.in
|  LLLuuuuuuuuuuuuuuuuRRR |  LLLuuuuuuuuuuuuuuuuRRR | LLLuuuuuuuuuuuuuuuuRRR  | LLLuuuuuuuuuuuuuuuuRRR  |
|  ...............****... |  ................*.*... | ................*.....  | ...............*.*....  |
|  .............*..*..... |  ..............*....... | ..............*.*.....  | .............*.***....  |
|  ...........*...**..... |  ..........*..**....... | ..........*.*.***.....  | ...........*.*.*......  |
|  .........**.**........ |  .........**.*.*....... | .........*.*..........  | ........**.*.*.*......  |
|  .........**..*........ |  ........***........... | ........**.**.........  | ........**.**.........  |
|  ........*..*.......... |  .......**............. | ........**..*.........  | ......................  |
|  .......**.*........... |  .......*..**.......... | .......**.*...........  | .......***............  |
|  .......***.*.......... |  ......*.*............. | .......***............  | ......****............  |
|  .......**.*........... |  ......***.**.......... | .......*.*.*..........  | .......***............  |
|  .......*.*.*.......... |  .......*.**........... | ........*.**..........  | ..........**..........  |
|  .....**.*............. |  .....*.*...*.......... | .....*****..**........  | .....*.***..*.........  |
|  .....*******.......... |  ....******.**......... | .....******.*.........  | ....*******..*........  |
|  .....*.******......... |  ....*******........... | .....*.****...........  | ....******............  |
|  ....*..****........... |  .......****........... | ....*..****.*.........  | .......*****..........  |
|  ....*.*****........... |  ...***.***.*.......... | ....*.*******.........  | ...***.****...........  |
|  ....*******........... |  ...********.*......... | ....*******...........  | ...*******..*.........  |
|  ....**.*******........ |  ....******.*.......... | ....**.***..*.........  | ....******............  |
|  .......***............ |  .......**..*.*........ | .......***...*........  | .......**..**.........  |
|  .......*.*...*........ |  ......****............ | .......*.***..........  | ......***.............  |
|  .......*.*.*.......... |  ......*...*........... | .......*.**...........  | ......*..***..........  |
|  ..??????????????????.. |  ..??????????????????.. | ..??????????????????..  | ..??????????????????..  |
|  ..??????????????????.. |  ..??????????????????.. | ..??????????????????..  | ..??????????????????..  |
|  ..??????????????????.. |  ..??????????????????.. | ..??????????????????..  | ..??????????????????..  |
|  ..??????????????????.. |  ..??????????????????.. | ..??????????????????..  | ..??????????????????..  |
$ cat n3a.x1.cstr
|  LLLuuuuuuuuuuuuuuuuRRR |  LLLuuuuuuuuuuuuuuuuRRR | LLLuuuuuuuuuuuuuuuuRRR  | LLLuuuuuuuuuuuuuuuuRRR  |
|  222222222222222*2**222 |  222222222222222.*.*222 | 222222222222222.2..222  | 222222222222222*.*.222  |
|  2222222222222*.2222222 |  2222222222222.*...2222 | 2222222222222.*2222222  | 2222222222222*.***2222  |
|  2222222222.*.2.2222222 |  2222222222*.22*.222222 | 2222222222*.*2*2222222  | 2222222222.*22.*222222  |
|  2222222222*.**22222222 |  22222222.2*.*.*.222222 | 2222222222.*..22222222  | 22222222*2.*.*.*222222  |
|  22222222.2*..*22222222 |  2222222222*..222222222 | 22222222*2.**.22222222  | 2222222222.**222222222  |
|  222222222.2*.222222222 |  2222222**2222222222222 | 222222222*2.*222222222  | 2222222..2222222222222  |
|  2222222222222222222222 |  22222222..**2222222222 | 2222222222222222222222  | 22222222**..2222222222  |
|  22222222222*2222222222 |  2222222.2.222222222222 | 22222222222.2222222222  | 2222222*2*222222222222  |
|  22222222*.*.2222222222 |  222222*22.**2222222222 | 22222222.*.*2222222222  | 222222.22*..2222222222  |
|  2222222*.*.22222222222 |  2222222*2*2.2222222222 | 2222222.*.*22222222222  | 2222222.2.2*2222222222  |
|  2222222.2.22..22222222 |  22222222..2*.222222222 | 2222222*2*22**22222222  | 22222222**2.*222222222  |
|  22222222222*.222222222 |  2222222222.**.22222222 | 22222222222.*222222222  | 2222222222*..*22222222  |
|  22222222222**222222222 |  2222222222*22222222222 | 22222222222..222222222  | 2222222222.22222222222  |
|  222222222222.222222222 |  22222222222.2222222222 | 222222222222*222222222  | 22222222222*2222222222  |
|  22222222222..222222222 |  2222222222.*2222222222 | 22222222222**222222222  | 2222222222*.2222222222  |
|  2222222222222222222222 |  2222222222*22222222222 | 2222222222222222222222  | 2222222222.22222222222  |
|  2222222222**2*22222222 |  22222222222*2222222222 | 2222222222..2.22222222  | 22222222222.2222222222  |
|  2222222222222.22222222 |  222222222222.*22222222 | 2222222222222*22222222  | 222222222222*.22222222  |
|  2222222222..2*22222222 |  222222222*222222222222 | 2222222222**2.22222222  | 222222222.222222222222  |
|  2222222222.*2222222222 |  222222222.2.2222222222 | 2222222222*.2222222222  | 222222222*2*2222222222  |
|  2222222222222222222222 |  2222222222222222222222 | 2222222222222222222222  | 2222222222222222222222  |
|  2222222222222222222222 |  2222222222222222222222 | 2222222222222222222222  | 2222222222222222222222  |
|  2222222222222222222222 |  2222222222222222222222 | 2222222222222222222222  | 2222222222222222222222  |
|  2222222222222222222222 |  2222222222222222222222 | 2222222222222222222222  | 2222222222222222222222  |
This solves easily enough with mid_steps=13:

Code: Select all

$ rlife llsss-recentering --rule 'B3678/S34678' 2c4-s2s n3a.x1.in --constraint grid:n3a.x1.cstr:pd:2 --partials srv2 13
...
20250714 12:44:33 [INFO] End [thinnest] ("LlsssEndsAgar", "zero"):
20250714 12:44:33 [INFO] |  LLLLLuuuuuuuuuuuuuuuuRR |  LLLLLuuuuuuuuuuuuuuuuRR | LLLLLuuuuuuuuuuuuuuuuRR  | LLLLLuuuuuuuuuuuuuuuuRR  |
20250714 12:44:33 [INFO] |  .........*.*...*....... |  ........****........... | .........*.***.........  | ........***............  |
20250714 12:44:33 [INFO] |  .........*.*.*......... |  ........*...*.......... | .........*.**..........  | ........*..***.........  |
20250714 12:44:33 [INFO] |  ......**............... |  ......**.....*......... | ......**...............  | ......**.....*.........  |
20250714 12:44:33 [INFO] |  ....*********.*........ |  ....*.***.............. | ....*********.*........  | ....*.***..............  |
20250714 12:44:33 [INFO] |  ...*.***............... |  ...*****.*****......... | ...*.***...............  | ...*****.*****.........  |
20250714 12:44:33 [INFO] |  ...*****.....*......... |  ..*****................ | ...*****.....*.........  | ..*****................  |
20250714 12:44:33 [INFO] |  ...**.*.**.***......... |  ...****.**.***......... | ...**.*.**.***.........  | ...****.**.***.........  |
20250714 12:44:33 [INFO] |  ......*..**.*.......... |  ......***..**.......... | ......*..**.*..........  | ......***..**..........  |
20250714 12:44:33 [INFO] |  ......****.***......... |  .....**....*..*........ | ......****.***.........  | .....**....*..*........  |
20250714 12:44:33 [INFO] |  ......*.**..***........ |  .....***...***.*....... | ......*.**..***........  | .....***...***.*.......  |
20250714 12:44:33 [INFO] |  ......*.*.******....... |  .......*.*.***......... | ......*.*.******.......  | .......*.*.***.........  |
20250714 12:44:33 [INFO] |  .......*******......... |  ......*.*****.......... | .......*******.........  | ......*.*****..........  |
20250714 12:44:33 [INFO] |  .......******.......... |  ......******.*......... | .......******..........  | ......******.*.........  |
20250714 12:44:33 [INFO] |  .......*.***........... |  .......*****........... | .......*.***...........  | .......*****...........  |
20250714 12:44:33 [INFO] |  ........****........... |  ........*.*.*.......... | ........****...........  | ........*.*.*..........  |
20250714 12:44:33 [INFO] |  ..........*.*.......... |  ..........*............ | ..........*.*..........  | ..........*............  |
20250714 12:44:33 [INFO] |  ....................... |  ....................... | .......................  | .......................  |
20250714 12:44:33 [INFO] |  ....................... |  ....................... | .......................  | .......................  |
...
Now what about our side? Some poking around with LGOL searches which is beyond the scope of this show there is an obvious p6 x 2c/4 level side but it's a touch thick and I had no luck trying to connect it to the front corner. Instead, I went looking for other edges, starting with arbitrary thin joints f2b like...

Code: Select all

$ cat n1-W01.in
|          |          |          | ABABuRRR |
|          | ABABuRRR | *.*.W... | *.*.W... |
| .*.*W... | .*.*W... | .*.*W... | .*.*W... |
| *.*.W... | *.*.W... |          |          |
Quickly enough (mid_steps=8) this started running forever, stuck on obvious cycles, e.g. this partial:

Code: Select all

$ rlife llsss-recentering --rule 'B3678/S34678' --left-edge 'agar:@cb.agar' --left-inertness 'agar:@cb.agar' 2c4-f2b 'n1-W01.in' --partials srv2 --ends none 08
...
20250714 15:07:52 [INFO] Random[ish] partial:
20250714 15:07:52 [INFO] |                                                                   |                                                                   |      SS                                                           | ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABuRR |
20250714 15:07:52 [INFO] |      SS                                                           | ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABuRR | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.... | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.... |
20250714 15:07:52 [INFO] | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*... |
20250714 15:07:52 [INFO] | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.... | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.. | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**... | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*****.. |
20250714 15:07:52 [INFO] | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*..***.. | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*..... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*....*.. | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*....... |
20250714 15:07:52 [INFO] | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.****... | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*****.. | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*... | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**..*.... |
20250714 15:07:52 [INFO] | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*....... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.****.... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*....*.... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*....*.... |
20250714 15:07:52 [INFO] | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*........ | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**....... | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*..... | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*........ |
20250714 15:07:52 [INFO] | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*....... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*......... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*......... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*....... |
20250714 15:07:52 [INFO] | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*........ | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**....... | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*........ | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.......... |
20250714 15:07:52 [INFO] | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**........ | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*..*........ | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*........ | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.......... |
20250714 15:07:52 [INFO] | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**......... | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*..**........ | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*..*......... | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*..**........ |
20250714 15:07:52 [INFO] | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.......... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.......... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*..*.*........ | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*****.*......... |
20250714 15:07:52 [INFO] | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*..*...*......... | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*..*...*......... | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*...*............ | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*..*............. |
20250714 15:07:52 [INFO] | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*.*.*........ | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**....*......... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.............. | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.............. |
20250714 15:07:52 [INFO] | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**............. | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**............. | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**............. | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.****............. |
20250714 15:07:52 [INFO] | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*................. | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*...*............. | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*.............. | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*..*.*.*.............. |
20250714 15:07:52 [INFO] | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*............. | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*................. | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.****..*.............. | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**................... |
20250714 15:07:52 [INFO] | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*......**............. | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*..**.**.............. | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*..*.*................ | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*................... |
20250714 15:07:52 [INFO] | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.***.................. | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**................... | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*................. | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.***.................. |
20250714 15:07:52 [INFO] | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.................... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*.................. | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.................... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*.................. |
20250714 15:07:52 [INFO] | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*...*.................. | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*...................... | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*...*.................. | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*..*..*.................... |
20250714 15:07:52 [INFO] | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.***................... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*..***.................. | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*****..................... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*...................... |
20250714 15:07:52 [INFO] | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*..*...*................... | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*...*...................... | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*..*...*................... | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**....................... |
20250714 15:07:52 [INFO] | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**........................ | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**........................ | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**........................ | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*........................... |
20250714 15:07:52 [INFO] | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**....................... | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**....................... | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.****....................... | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*....................... |
20250714 15:07:52 [INFO] | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*...*....................... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*........................ | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*..*.*.*........................ | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*......**....................... |
20250714 15:07:52 [INFO] | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*........................... | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.****..*........................ | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**............................. | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.***............................ |
20250714 15:07:52 [INFO] | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*..**.**........................ | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*..*.*.......................... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*............................. | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.............................. |
20250714 15:07:52 [INFO] | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**............................. | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*........................... | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.***............................ | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*...*............................ |
20250714 15:07:52 [INFO] | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*............................ | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.............................. | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*............................ | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.***............................. |
20250714 15:07:52 [INFO] | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*................................ | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*...*............................ | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*..*..*.............................. | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*..*...*............................. |
20250714 15:07:52 [INFO] | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*..***............................ | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*****............................... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*................................ | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.................................. |
20250714 15:07:52 [INFO] | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*...*................................ | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*..*...*............................. | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**................................. | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**................................. |
20250714 15:07:52 [INFO] | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.................................. | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.................................. | .*.*.*.*.*.*.*.*.*.*.*.*.*.*..................................... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*...*................................. |
20250714 15:07:52 [INFO] | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**................................. | *.*.*.*.*.*.*.*.*.*.*.*.*.*.****................................. | *.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*................................. | *.*.*.*.*.*.*.*.*.*.*.*.**.*..................................... |
20250714 15:07:52 [INFO] | .*.*.*.*.*.*.*.*.*.*.*.*.*.**.*.................................. | .*.*.*.*.*.*.*.*.*.*.*.*..*.*.*.................................. | .*.*.*.*.*.*.*.*.*.*.*.*......**................................. | .*.*.*.*.*.*.*.*.*.*.*.*..**.**.................................. |
20250714 15:07:52 [INFO] | *.*.*.*.*.*.*.*.*.*.*.*.****..*.................................. | *.*.*.*.*.*.*.*.*.*.*.*.**....................................... | *.*.*.*.*.*.*.*.*.*.*.*.***...................................... | *.*.*.*.*.*.*.*.*.*.*.*.**....................................... |
20250714 15:07:52 [INFO] | .*.*.*.*.*.*.*.*.*.*.*.*..*.*.................................... | .*.*.*.*.*.*.*.*.*.*.*.*.*....................................... | .*.*.*.*.*.*.*.*.*.*.*.**........................................ | .*.*.*.*.*.*.*.*.*.*.*.**.*...................................... |
20250714 15:07:52 [INFO] | *.*.*.*.*.*.*.*.*.*.*.*.**.*..................................... | *.*.*.*.*.*.*.*.*.*.*.*.***...................................... | *.*.*.*.*.*.*.*.*.*.*.*...*...................................... | *.*.*.*.*.*.*.*.*.*.*.*.......................................... |
20250714 15:07:52 [INFO] | .*.*.*.*.*.*.*.*.*.*.*.**........................................ | .*.*.*.*.*.*.*.*.*.*.*.**.*...................................... | .*.*.*.*.*.*.*.*.*.*.*.***....................................... | .*.*.*.*.*.*.*.*.*.*.*..***...................................... |
20250714 15:07:52 [INFO] | *.*.*.*.*.*.*.*.*.*.*.*...*...................................... | *.*.*.*.*.*.*.*.*.*..*..*........................................ | *.*.*.*.*.*.*.*.*.*..*...*....................................... | *.*.*.*.*.*.*.*.*.*...*.......................................... |
20250714 15:07:52 [INFO] | .*.*.*.*.*.*.*.*.*.*****......................................... | .*.*.*.*.*.*.*.*.*.**.*.......................................... | .*.*.*.*.*.*.*.*.*.**............................................ | .*.*.*.*.*.*.*.*.*.**............................................ |
20250714 15:07:52 [INFO] | *.*.*.*.*.*.*.*.*.*..*...*....................................... | *.*.*.*.*.*.*.*.*.*.**........................................... | *.*.*.*.*.*.*.*.*.*.**........................................... | *.*.*.*.*.*.*.*.*.*.**........................................... |
20250714 15:07:52 [INFO] | .*.*.*.*.*.*.*.*.*.**............................................ | .*.*.*.*.*.*.*.*.*............................................... | .*.*.*.*.*.*.*.*.*...*........................................... | .*.*.*.*.*.*.*.*.**.*............................................ |
20250714 15:07:52 [INFO] | *.*.*.*.*.*.*.*.*.****........................................... | *.*.*.*.*.*.*.*.*.**.*........................................... | *.*.*.*.*.*.*.**.*............................................... | *.*.*.*.*.*.*.****..*............................................ |
20250714 15:07:52 [INFO] | .*.*.*.*.*.*.*..*.*.*............................................ | .*.*.*.*.*.*.*......**........................................... | .*.*.*.*.*.*.*..**.**............................................ | .*.*.*.*.*.*.*..*.*.............................................. |
20250714 15:07:52 [INFO] | *.*.*.*.*.*.*.**................................................. | *.*.*.*.*.*.*.***................................................ | *.*.*.*.*.*.*.**................................................. | *.*.*.*.*.*.*.**.*............................................... |
20250714 15:07:52 [INFO] | .*.*.*.*.*.*.*.*................................................. | .*.*.*.*.*.*.**.................................................. | .*.*.*.*.*.*.**.*................................................ | .*.*.*.*.*.*.**.................................................. |
20250714 15:07:52 [INFO] | *.*.*.*.*.*.*.***................................................ | *.*.*.*.*.*.*...*................................................ | *.*.*.*.*.*.*.................................................... | *.*.*.*.*.*.*...*................................................ |
20250714 15:07:52 [INFO] | .*.*.*.*.*.*.**.*................................................ | .*.*.*.*.*.*.***................................................. | .*.*.*.*.*.*..***................................................ | .*.*.*.*.*****................................................... |
20250714 15:07:52 [INFO] | *.*.*.*.*..*..*.................................................. | *.*.*.*.*..*...*................................................. | *.*.*.*.*...*.................................................... | *.*.*.*.*..*...*................................................. |
20250714 15:07:52 [INFO] | .*.*.*.*.**.*.................................................... | .*.*.*.*.**...................................................... | .*.*.*.*.**...................................................... | .*.*.*.*.**...................................................... |
20250714 15:07:52 [INFO] | *.*.*.*.*.**..................................................... | *.*.*.*.*.**..................................................... | *.*.*.*.*.**..................................................... | *.*.*.*.****..................................................... |
20250714 15:07:52 [INFO] | .*.*.*.*......................................................... | .*.*.*.*...*..................................................... | .*.*.*.**.*...................................................... | .*.*..*.*.*...................................................... |
20250714 15:07:52 [INFO] | *.*.*.*.**.*..................................................... | *.*.**.*......................................................... | *.*.****..*...................................................... | *.*.**........................................................... |
20250714 15:07:52 [INFO] | .*.*......**..................................................... | .*.*..**.**...................................................... | .*.*..*.*........................................................ | .*.*.*........................................................... |
20250714 15:07:52 [INFO] | *.*.***.......................................................... | *.*.**........................................................... | *.*.**.*......................................................... | *.*.*****........................................................ |
20250714 15:07:52 [INFO] | .*.**..*......................................................... | .*.**.*.......................................................... | .*.*.***......................................................... | .*.**.***........................................................ |
20250714 15:07:52 [INFO] | *.*.....*........................................................ | *..*.**.*........................................................ | *..**.**......................................................... | *.....*.......................................................... |
20250714 15:07:52 [INFO] | .*****.**........................................................ | .**.**........................................................... |                                                                   |                                                                   |
...
This connection I found a bit tricky to do. Ultimately I searched f2b from the above front corner split. I included this intended back slope both as inertness (so as part of partials it would not count towards mid_steps, allowing even very small searches to include large patches of it) and as complicated regex ends, both to search for finding it with some to-be-solved side branch ("gap") or optimistically matched exactly ("full").

Code: Select all

$ cat n4x.in
|                           |                           | BAuuuuuuuuuuuuuuuuuuBALLL | ......................... |
| BAuuuuuuuuuuuuuuuuuuBALLL | ......................... | ........**........**..... | ........**........**..... |
| ........**........**..... | ........**........**..... | *......****......****.... | *......****......****.... |
| *......****......****.... | *......****......****.... | *......****......****.... | .*.....***.*.....***.*aaa |
| *......****......****.... | *.....*.***.....*.***.aaa | .*..*.****.*..*.****.*aaa | *****.*.*******.*.****aaa |
| **.*..*.****.*..*.****aaa | .*.*******.*.*******.*aaa | **.****..***.****..***aaa | .*..**.**..*..**.**..*aaa |
| .****.***..****.***..*aaa | *.**..*..**.**..*..**.aaa | ..****.***..****.***..aaa | .**.*..***.**.*..***.*aaa |
| *.****..***.****..***.aaa | *..*.**.***..*.**.***.aaa | ...*..*..*...*..*..*..aaa | *...*.*.***...*.*.***.aaa |
| .*..*...*..*..*...*..*aaa | .*.*...***.*.*...***.*aaa | ...**..*.*...**..*.*..aaa | *.***.*...*.***.*...*.aaa |
| *..**...*.*..**...*.*.aaa | .*.***.*...*.***.*...*aaa | ...**.*..*...**.*..*..aaa | ...*....*....*....*...... |
| .*.**...*..*.**...*..*aaa | ....*....*....*....*..... | ....**........**......... | ....**........**......... |
| ..**........**........... | ..**........**........... | ...*.........*........... | .....*.........*......... |
| ....*.........*.......... | ..*.........*............ | ....*.........*.......... | ..**........**........?.. |
| ...*.........*........... | ....**........**......?.. | .**.....**.**.....**.*?.. | *...**.****...**.****.?.. |
| .....**.**.....**.**..?.. | *.**...****.**...****.?.. | ...**.*.**...**.*.**..?.. | ..***...**..***...**..?.. |
| .*.**...**.*.**...**.*?.. | ...***..**...***..**..?.. | .***.**..*.***.**..*.*?.. | ..**...*.*..**...*.*..?.. |
| .**.***.*..**.***.*..*?.. | *...**..*.*...**..*.*.?.. | *....****.*....****.*.?.. | *..*..*.*.*..*..*.*.*.?.. |
| ***....*.****....*.***?.. | .*..*..*.*.*..*..*.*.*?.. | .*..*.**.*.*..*.**.*.*?.. | .*.*.*.*.*.*.*.*.*.*.*?.. |
| **.*..*.*.**.*..*.*.**?.. | *.*.*.*.*.*.*.*.*.*.*.?.. | *.*.*.*.*.*.*.*.*.*.*.?.. | *.*.*.*.*.*.*.*.*.*.*.?.. |
| .*.*.*.*.*.*.*.*.*.*.*?.. | .*.*.*.*.*.*.*.*.*.*.*?.. | .*.*.*.*.*.*.*.*.*.*.*?.. | .*.*.*.*.*.*.*.*.*.*.*?.. |
| *.*.*.*.*.*.*.*.*.*.*.?.. | *.*.*.*.*.*.*.*.*.*.*.?.. | *.*.*.*.*.*.*.*.*.*.*.?.. | *.*.*.*.*.*.*.*.*.*.*.?.. |
| .*.*.*.*.*.*.*.*.*.*.*?.. | .*.*.*.*.*.*.*.*.*.*.*?.. | .*.*.*.*.*.*.*.*.*.*.*?.. |                           |
| *.*.*.*.*.*.*.*.*.*.*.?.. |                           |                           |                           |
$ cat n4xx-r2.bg
|                                                  |                                                  |                                                  |                                                  |
|                                                  |                                                  | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*..*.*.............. | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*................. |
| .*.*.*.*.*.*.*.*.*.*.*.*.*.*.***................ | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.**................. | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*............... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.***................ |
| *.*.*.*.*.*.*.*.*.*.*.*.*.*.**.................. | *.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*................ | *.*.*.*.*.*.*.*.*.*.*.*.*.*.**.................. | *.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*................ |
| .*.*.*.*.*.*.*.*.*.*.*.*.*.*...*................ | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.................... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*...*................ | .*.*.*.*.*.*.*.*.*.*.*.*..*..*.................. |
| *.*.*.*.*.*.*.*.*.*.*.*.*.*.***................. | *.*.*.*.*.*.*.*.*.*.*.*.*.*..***................ | *.*.*.*.*.*.*.*.*.*.*.*.*****................... | *.*.*.*.*.*.*.*.*.*.*.*.**.*.................... |
| .*.*.*.*.*.*.*.*.*.*.*.*..*...*................. | .*.*.*.*.*.*.*.*.*.*.*.*...*.................... | .*.*.*.*.*.*.*.*.*.*.*.*..*...*................. | .*.*.*.*.*.*.*.*.*.*.*.*.**..................... |
| *.*.*.*.*.*.*.*.*.*.*.*.**...................... | *.*.*.*.*.*.*.*.*.*.*.*.**...................... | *.*.*.*.*.*.*.*.*.*.*.*.**...................... | *.*.*.*.*.*.*.*.*.*.*.*......................... |
| .*.*.*.*.*.*.*.*.*.*.*.*.**..................... | .*.*.*.*.*.*.*.*.*.*.*.*.**..................... | .*.*.*.*.*.*.*.*.*.*.*.****..................... | .*.*.*.*.*.*.*.*.*.*.*.**.*..................... |
| *.*.*.*.*.*.*.*.*.*.*.*...*..................... | *.*.*.*.*.*.*.*.*.*.*.**.*...................... | *.*.*.*.*.*.*.*.*.*..*.*.*...................... | *.*.*.*.*.*.*.*.*.*......**..................... |
| .*.*.*.*.*.*.*.*.*.**.*......................... | .*.*.*.*.*.*.*.*.*.****..*...................... | .*.*.*.*.*.*.*.*.*.**........................... | .*.*.*.*.*.*.*.*.*.***.......................... |
| *.*.*.*.*.*.*.*.*.*..**.**...................... | *.*.*.*.*.*.*.*.*.*..*.*........................ | *.*.*.*.*.*.*.*.*.*.*........................... | *.*.*.*.*.*.*.*.*.**............................ |
| .*.*.*.*.*.*.*.*.*.**........................... | .*.*.*.*.*.*.*.*.*.**.*......................... | .*.*.*.*.*.*.*.*.*.***.......................... |                                                  |
| *.*.*.*.*.*.*.*.*.**.*.......................... |                                                  |                                                  |                                                  |
$ cat n4xx-r2.bg2
|                                                  |                                                  |                                                  |                                                  |
|                                                  |                                                  | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.***................ | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.**................. |
| *.*.*.*.*.*.*.*.*.*.*.*.*.*.*..*.*.............. | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*................. | *.*.*.*.*.*.*.*.*.*.*.*.*.*.**.................. | *.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*................ |
| .*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*............... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.***................ | .*.*.*.*.*.*.*.*.*.*.*.*.*.*...*................ | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.................... |
| *.*.*.*.*.*.*.*.*.*.*.*.*.*.**.................. | *.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*................ | *.*.*.*.*.*.*.*.*.*.*.*.*.*.***................. | *.*.*.*.*.*.*.*.*.*.*.*.*.*..***................ |
| .*.*.*.*.*.*.*.*.*.*.*.*.*.*...*................ | .*.*.*.*.*.*.*.*.*.*.*.*..*..*.................. | .*.*.*.*.*.*.*.*.*.*.*.*..*...*................. | .*.*.*.*.*.*.*.*.*.*.*.*...*.................... |
| *.*.*.*.*.*.*.*.*.*.*.*.*****................... | *.*.*.*.*.*.*.*.*.*.*.*.**.*.................... | *.*.*.*.*.*.*.*.*.*.*.*.**...................... | *.*.*.*.*.*.*.*.*.*.*.*.**...................... |
| .*.*.*.*.*.*.*.*.*.*.*.*..*...*................. | .*.*.*.*.*.*.*.*.*.*.*.*.**..................... | .*.*.*.*.*.*.*.*.*.*.*.*.**..................... | .*.*.*.*.*.*.*.*.*.*.*.*.**..................... |
| *.*.*.*.*.*.*.*.*.*.*.*.**...................... | *.*.*.*.*.*.*.*.*.*.*.*......................... | *.*.*.*.*.*.*.*.*.*.*.*...*..................... | *.*.*.*.*.*.*.*.*.*.*.**.*...................... |
| .*.*.*.*.*.*.*.*.*.*.*.****..................... | .*.*.*.*.*.*.*.*.*.*.*.**.*..................... | .*.*.*.*.*.*.*.*.*.**.*......................... | .*.*.*.*.*.*.*.*.*.****..*...................... |
| *.*.*.*.*.*.*.*.*.*..*.*.*...................... | *.*.*.*.*.*.*.*.*.*......**..................... | *.*.*.*.*.*.*.*.*.*..**.**...................... | *.*.*.*.*.*.*.*.*.*..*.*........................ |
| .*.*.*.*.*.*.*.*.*.**........................... | .*.*.*.*.*.*.*.*.*.***.......................... | .*.*.*.*.*.*.*.*.*.**........................... | .*.*.*.*.*.*.*.*.*.**.*......................... |
| *.*.*.*.*.*.*.*.*.*.*........................... | *.*.*.*.*.*.*.*.*.**............................ | *.*.*.*.*.*.*.*.*.**.*.......................... |                                                  |
| .*.*.*.*.*.*.*.*.*.***.......................... |                                                  |                                                  |                                                  |
$ cat n4x-r2-full.ends
|                                                                                                                                                                                                                                                                                                                               |                                                                                                                                                                                                                                                                                                                               | (((u+)(uu)*(uuuuuu+uuuuu+uuuuu+uuuu+uuuuuuuu+uuuuuuuu+uuuuuuuu+uuuuuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuu+uuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuuuuuuu))+((u+)(uu)*(uuuuuu+uuuuu+uuuuu+uuuu+uuuuuuuu+uuuuuuuu+uuuuuuuu+uuuuuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuu+uuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuuuuuuu)))(u)* | ___.___*.___*..*.*_*.*.._**..._**.*_*.*.**.._*.*.**.*_*.*.***._*.*..***_*****.._**.*..._**....._**._*.**._*.*...._*.*...*_*.**.*._.*.*.*._.....**_*..**.**_____*___.*___.***.._.**.._.**.*_.***_.*.*...*_.*.*...._.*.*...*_..*..*.._..*...*_...*..._..*...*_.**_.*.**_.*.*.**_.*.****_.*.**.*_*.*...._***..*._.**.....____.__ |
| (((u+)(uu)*(uuuuuu+uuuuu+uuuuu+uuuu+uuuuuuuu+uuuuuuuu+uuuuuuuu+uuuuuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuu+uuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuuuuuuu))+((u+)(uu)*(uuuuuu+uuuuu+uuuuu+uuuu+uuuuuuuu+uuuuuuuu+uuuuuuuu+uuuuuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuu+uuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuuuuuuu)))(u)* | ___*___.*___.***.._.**.._.**.*_.***_.*.*...*_.*.*...._.*.*...*_..*..*.._..*...*_...*..._..*...*_.**_.*.**_.*.*.**_.*.****_.*.**.*_*.*...._***..*._.**....._____.___*.___*..*.*_*.*.._**..._**.*_*.*.**.._*.*.**.*_*.*.***._*.*..***_*****.._**.*..._**....._**._*.**._*.*...._*.*...*_*.**.*._.*.*.*._.....**_*..**.**____.__ | ___*___.*___.**..._.**.*_.***._...*_.*.*...._.*.*...*_..*..*.._..*...*._...*..._..*...*_.**...._.**_.*.**_.*.****_.*.**.*_*.*...._***..*._*......_.***...._____.___*.___*.*..._**..._**.*._**.._*.*.**.*_*.*.***._*.*..***_*****..._**.*..._**....._**....._**._*...._*.*...*_*.**.*._.*.*.*._.....**_.**.**._*..*.*..____.__ | ___*___.*___.**.*._.***._...*._...._.*.*...*_..*..*.._..*...*._...*...._..*...*_.**...._.**...._.**_.****_.*.**.*_*.*...._***..*._*......_**....._.**....._____.___*.___**...._**.*._**..._**.*_*.*.***._*.*..***_*****..._**.*...._**....._**....._**....._..._*...*_*.**.*._.*.*.*._.....**_.**.**._.*.*..._*.*.....____.__ |
| ___.___*.___*.*..._**..._**.*._**.._*.*.**.*_*.*.***._*.*..***_*****..._**.*..._**....._**....._**._*...._*.*...*_*.**.*._.*.*.*._.....**_.**.**._*..*.*.._____*___.*___.**..._.**.*_.***._...*_.*.*...._.*.*...*_..*..*.._..*...*._...*..._..*...*_.**...._.**_.*.**_.*.****_.*.**.*_*.*...._***..*._*......_.***....____.__ | ___.___*.___**...._**.*._**..._**.*_*.*.***._*.*..***_*****..._**.*...._**....._**....._**....._..._*...*_*.**.*._.*.*.*._.....**_.**.**._.*.*..._*.*....._____*___.*___.**.*._.***._...*._...._.*.*...*_..*..*.._..*...*._...*...._..*...*_.**...._.**...._.**_.****_.*.**.*_*.*...._***..*._*......_**....._.**.....____.__ | ___.___*.___**.*.._**..._**.*._***._*.*..***_*****..._**.*...._**......_**....._**....._......._..*_**.*._.*.*.*._.....**_.**.**._.*.*..._*......_**......_____*___.*___.***.._...*._....._...*_..*..*.._..*...*._...*...._..*...*._.**...._.**...._.**...._***_.**.*_*.*...._***..*._*......_**....._*......_.**.*...____.__ |                                                                                                                                                                                                                                                                                                                               |
| ___*___.*___.***.._...*._....._...*_..*..*.._..*...*._...*...._..*...*._.**...._.**...._.**...._***_.**.*_*.*...._***..*._*......_**....._*......_.**.*..._____.___*.___**.*.._**..._**.*._***._*.*..***_*****..._**.*...._**......_**....._**....._......._..*_**.*._.*.*.*._.....**_.**.**._.*.*..._*......_**......____.__ |                                                                                                                                                                                                                                                                                                                               |                                                                                                                                                                                                                                                                                                                               |                                                                                                                                                                                                                                                                                                                               |
$ cat n4x-r2-gap.ends
|                                                                                                                                                                                                                                                                                                                                  |                                                                                                                                                                                                                                                                                                                                  | (((u+)(uu)*(uuuuuu+uuuuu+uuuuu+uuuu+uuuuuuuu+uuuuuuuu+uuuuuuuu+uuuuuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuu+uuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuuuuuuu))+((u+)(uu)*(uuuuuu+uuuuu+uuuuu+uuuu+uuuuuuuu+uuuuuuuu+uuuuuuuu+uuuuuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuu+uuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuuuuuuu)))uuu(u)* | ___.___*.___*..*.*_*.*.._**..._**.*_*.*.**.._*.*.**.*_*.*.***._*.*..***_*****.._**.*..._**....._**._*.**._*.*...._*.*...*_*.**.*._.*.*.*._.....**_*..**.**_____*___.*___.***.._.**.._.**.*_.***_.*.*...*_.*.*...._.*.*...*_..*..*.._..*...*_...*..._..*...*_.**_.*.**_.*.*.**_.*.****_.*.**.*_*.*...._***..*._.**.....___..._W__ |
| (((u+)(uu)*(uuuuuu+uuuuu+uuuuu+uuuu+uuuuuuuu+uuuuuuuu+uuuuuuuu+uuuuuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuu+uuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuuuuuuu))+((u+)(uu)*(uuuuuu+uuuuu+uuuuu+uuuu+uuuuuuuu+uuuuuuuu+uuuuuuuu+uuuuuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuu+uuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuuuuuu+uuuuuuuu)))uuu(u)* | ___*___.*___.***.._.**.._.**.*_.***_.*.*...*_.*.*...._.*.*...*_..*..*.._..*...*_...*..._..*...*_.**_.*.**_.*.*.**_.*.****_.*.**.*_*.*...._***..*._.**....._____.___*.___*..*.*_*.*.._**..._**.*_*.*.**.._*.*.**.*_*.*.***._*.*..***_*****.._**.*..._**....._**._*.**._*.*...._*.*...*_*.**.*._.*.*.*._.....**_*..**.**___..._W__ | ___*___.*___.**..._.**.*_.***._...*_.*.*...._.*.*...*_..*..*.._..*...*._...*..._..*...*_.**...._.**_.*.**_.*.****_.*.**.*_*.*...._***..*._*......_.***...._____.___*.___*.*..._**..._**.*._**.._*.*.**.*_*.*.***._*.*..***_*****..._**.*..._**....._**....._**._*...._*.*...*_*.**.*._.*.*.*._.....**_.**.**._*..*.*..___..._W__ | ___*___.*___.**.*._.***._...*._...._.*.*...*_..*..*.._..*...*._...*...._..*...*_.**...._.**...._.**_.****_.*.**.*_*.*...._***..*._*......_**....._.**....._____.___*.___**...._**.*._**..._**.*_*.*.***._*.*..***_*****..._**.*...._**....._**....._**....._..._*...*_*.**.*._.*.*.*._.....**_.**.**._.*.*..._*.*.....___..._W__ |
| ___.___*.___*.*..._**..._**.*._**.._*.*.**.*_*.*.***._*.*..***_*****..._**.*..._**....._**....._**._*...._*.*...*_*.**.*._.*.*.*._.....**_.**.**._*..*.*.._____*___.*___.**..._.**.*_.***._...*_.*.*...._.*.*...*_..*..*.._..*...*._...*..._..*...*_.**...._.**_.*.**_.*.****_.*.**.*_*.*...._***..*._*......_.***....___..._W__ | ___.___*.___**...._**.*._**..._**.*_*.*.***._*.*..***_*****..._**.*...._**....._**....._**....._..._*...*_*.**.*._.*.*.*._.....**_.**.**._.*.*..._*.*....._____*___.*___.**.*._.***._...*._...._.*.*...*_..*..*.._..*...*._...*...._..*...*_.**...._.**...._.**_.****_.*.**.*_*.*...._***..*._*......_**....._.**.....___..._W__ | ___.___*.___**.*.._**..._**.*._***._*.*..***_*****..._**.*...._**......_**....._**....._......._..*_**.*._.*.*.*._.....**_.**.**._.*.*..._*......_**......_____*___.*___.***.._...*._....._...*_..*..*.._..*...*._...*...._..*...*._.**...._.**...._.**...._***_.**.*_*.*...._***..*._*......_**....._*......_.**.*...___..._W__ |                                                                                                                                                                                                                                                                                                                                  |
| ___*___.*___.***.._...*._....._...*_..*..*.._..*...*._...*...._..*...*._.**...._.**...._.**...._***_.**.*_*.*...._***..*._*......_**....._*......_.**.*..._____.___*.___**.*.._**..._**.*._***._*.*..***_*****..._**.*...._**......_**....._**....._......._..*_**.*._.*.*.*._.....**_.**.**._.*.*..._*......_**......___..._W__ |                                                                                                                                                                                                                                                                                                                                  |                                                                                                                                                                                                                                                                                                                                  |                                                                                                                                                                                                                                                                                                                                  |
When run even with just 4MB this did find stuff, first the "gap", but then quickly enough a complete solution:

Code: Select all

$ rlife llsss-recentering --rule 'B3678/S34678' 2c4-f2b n4x.in --top-pad 02 --left-pad 20 --fuzzy-left-edge --left-inertness 'agar:@cb.agar,blocks:n4xx-r2.bg,blocks:n4xx-r2.bg2' --left-edge 'pic:agar:@cb.agar' --partials srv2 --ends regex:n4x-r2-full.ends,regex:n4x-r2-gap.ends --pre-reify-autochoke 4MB XX
...
20250714 15:26:50 [INFO] End [thinnest] ("LlsssEndsRegex", "n4x-r2-gap.ends"):
20250714 15:26:50 [INFO] |                        |                        |                        | uuuuuuuuuBALLLLLLLLLLL |
20250714 15:26:50 [INFO] |                        | uuuuuuuuuBALLLLLLLLLLL | ..*....*.............. | .**................... |
20250714 15:26:50 [INFO] | ...*....*............. | ...**................. | ...**................. | ...*.................. |
20250714 15:26:50 [INFO] | .**................... | ..*................... | ....*................. | ..*............**..... |
20250714 15:26:50 [INFO] | .*.................... | ...*...........**..... | .**........**.****.... | ....**.**.****.***.... |
20250714 15:26:50 [INFO] | ...**......**.****.... | **.....**.****.***.... | ...**.****.**...*.*... | *.**...**..*...****... |
20250714 15:26:50 [INFO] | .**...****.**...*.*... | ..**.*.**..*...****... | .***...**..*.*.****... | **.***.*..*...******.. |
20250714 15:26:50 [INFO] | ..***..**..*.*.***.*.. | ***.**..*..*..****.... | .**...*.*.....*....*.. | **....*.*...*......... |
20250714 15:26:50 [INFO] | ...**..*.*.*...*..*... | ....****......*...**.. | ..*..*.*.....***..*... | *.*..*.*....**.*...*.. |
20250714 15:26:50 [INFO] | *..*..*....*.....*.*.. | *..*.**...*...*.*.*... | *.*.*.*....*.*.*..*... | *.*.*.**..**.*****.... |
20250714 15:26:50 [INFO] | .*.*.*.**...**.*...... | .*.*.*.*...**....**... | .*.*.*.*..***.*..*.... | .*.*.*....*..*...*.... |
20250714 15:26:50 [INFO] | *.*.*.*....*.*.**.*... | *.*.*.*.*..**.***..... | *.*.*.*...*.******.*.. | *.*.*.*.******.*.*.... |
20250714 15:26:50 [INFO] | .*.*.*..*..****.***... | .*.*.**....****.****.. | .*..*.**.*.***.*.**... | .*........*****.*.*... |
20250714 15:26:50 [INFO] | *.**.*...*.**....**... | *.****...******.***... | *.**........**.***.... | *.***...**.***.***.... |
20250714 15:26:50 [INFO] | .*..**.*.*****........ | .*..*.*..*.*.**.*.*... | .*.*.....****..****... | .**.......*.....*.*... |
20250714 15:26:50 [INFO] | *.**.....*...*.**.*... | *.**.*..**...*.**.**.. | *.***......**.**.*.*.. | *...*.....**...*****.. |
20250714 15:26:50 [INFO] | .**.*.....*...*.****.. | .**........*********.. | .**.*....***.*******.. | .***........**..*.*... |
20250714 15:26:50 [INFO] | *..........**..*****.. | *...*.....*.***.***... |                        |                        |
...
20250714 15:27:34 [INFO] End [thinnest] ("LlsssEndsRegex", "n4x-r2-full.ends"):
20250714 15:27:34 [INFO] |                                             |                                             |                                             | uuuuuuuuuBAuuuuuuuuuuuuuuuuuuBALLLLLLLLLLLL |
20250714 15:27:34 [INFO] |                                             | uuuuuuuuuBAuuuuuuuuuuuuuuuuuuBALLLLLLLLLLLL | ..*....*....*....*....*....*............... | .**........**........**.................... |
20250714 15:27:34 [INFO] | ...*....*....*....*....*....*.............. | ...**........**........**.................. | ...**........**........**.................. | ...*.........*.........*................... |
20250714 15:27:34 [INFO] | .**........**........**.................... | ..*.........*.........*.................... | ....*.........*.........*.................. | ..*.........*.........*.................... |
20250714 15:27:34 [INFO] | .*.........*.........*..................... | ...*.........*.........*................... | .**........**........**.....**............. | ....**.**.....**.**.....**.****............ |
20250714 15:27:34 [INFO] | ...**........**........**...**............. | **.....**.**.....**.**.....****............ | ...**.****...**.****...**.**.**............ | *.**...**.*.**...**.*.**...***.*........... |
20250714 15:27:34 [INFO] | .**...****.**...****.**...**.**............ | ..**.*.**...**.*.**...**.*.***.*........... | .***...**..***...**..***...*****....**..... | **.***.*..**.***.*..**.***.*.*****.****.... |
20250714 15:27:34 [INFO] | ..***..**...***..**...***..*****....**..... | ***.**..*.***.**..*.***.**..**.***.****.... | .**...*.*..**...*.*..**...*..**.***.***.... | **....*.****....*.****....*.*..***...*.*... |
20250714 15:27:34 [INFO] | ...**..*.*...**..*.*...**..***..***.***.... | ....****.*....****.*....****..****...*.*... | ..*..*.*.*..*..*.*.*..*..*.**..**...****... | *.*..*.*.**.*..*.*.**.*..*.***.**.*.****... |
20250714 15:27:34 [INFO] | *..*..*.*.*..*..*.*.*..*..*...***...****... | *..*.**.*.*..*.**.*.*..*.**...***.*.****... | *.*.*.*.*.*.*.*.*.*.*.*.*.*.***....****.... | *.*.*.*.*.*.*.*.*.*.*.*.*.*....*..**.**.... |
20250714 15:27:34 [INFO] | .*.*.*.*.*.*.*.*.*.*.*.*.*.**..*..*.*.**... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*...*..*****.. | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.******..***... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*....*..***..... |
20250714 15:27:34 [INFO] | *.*.*.*.*.*.*.*.*.*.*.*.*.*...**..*.**.*... | *.*.*.*.*.*.*.*.*.*.*.*.*.*.******..**..... | *.*.*.*.*.*.*.*.*.*.*.*.*.*...*.******..... | *.*.*.*.*.*.*.*.*.*.*.*.*.**..*****.**..... |
20250714 15:27:34 [INFO] | .*.*.*.*.*.*.*.*.*.*.*.*.*.*..*.*...*...... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*****..*.*.... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*.*******....... | .*.*.*.*.*.*.*.*.*.*.*.*.*...*...***....... |
20250714 15:27:34 [INFO] | *.*.*.*.*.*.*.*.*.*.*.*.*.*.*..**..*.*..... | *.*.*.*.*.*.*.*.*.*.*.*.*.**...*..*........ | *.*.*.*.*.*.*.*.*.*.*.*.*..*.*.*..**....... | *.*.*.*.*.*.*.*.*.*.*.*.**.********.*...... |
20250714 15:27:34 [INFO] | .*.*.*.*.*.*.*.*.*.*.*.*.*...******..*..... | .*.*.*.*.*.*.*.*.*.*.*.*.*.*..*..**........ | .*.*.*.*.*.*.*.*.*.*.**.*..***.*.**.*...... | .*.*.*.*.*.*.*.*.*.*.****...**.*.*.**...... |
20250714 15:27:34 [INFO] | *.*.*.*.*.*.*.*.*.*.*..*.**....*..***...... | *.*.*.*.*.*.*.*.*.*.*.......*.*...****..... | *.*.*.*.*.*.*.*.*.*.*..**.***.*.*.***...... | *.*.*.*.*.*.*.*.*.*.*..*.*.**.*.*.*.**..... |
20250714 15:27:34 [INFO] | .*.*.*.*.*.*.*.*.*.*.**.....***.*...*...... | .*.*.*.*.*.*.*.*.*.*.***...*.****..*....... | .*.*.*.*.*.*.*.*.*.*.**.......**.*..*...... | .*.*.*.*.*.*.*.*.*.*.**.*....*...*.***..... |
20250714 15:27:34 [INFO] | *.*.*.*.*.*.*.*.*.*.*.*.....*.***.****..... | *.*.*.*.*.*.*.*.*.*.**......**..*..***..... | *.*.*.*.*.*.*.*.*.*.**.*....****..*.*...... | *.*.*.*.*.*.*.*.*.*.**.......*.*.**.**..... |
20250714 15:27:34 [INFO] | .*.*.*.*.*.*.*.*.*.*.***.....*.*.*..*.*.... | .*.*.*.*.*.*.*.*.*.*...*.....*.***......... | .*.*.*.*.*.*.*.*.*.*...........*.*.*.*..... | .*.*.*.*.*.*.*.*.*.*...*....*.*...**....... |
20250714 15:27:34 [INFO] | *.*.*.*.*.*.*.*.*.*.**.*....**..**.*.*..... | *.*.*.*.*.*.*.*.*.*.***.....***.**.*.*..... | *.*.*.*.*.*.*.*.*.*..***....*.***...*...... | *.*.*.*.*.*.*.*.*****..........*.*......... |
20250714 15:27:34 [INFO] | .*.*.*.*.*.*.*.*..*..*.......***..***...... | .*.*.*.*.*.*.*.*..*...*......***.**..*..... | .*.*.*.*.*.*.*.*...*.........****.......... | .*.*.*.*.*.*.*.*..*...*....*.***.*.*.*..... |
20250714 15:27:34 [INFO] | *.*.*.*.*.*.*.*.**.*........*..*...**...... | *.*.*.*.*.*.*.*.**..........*****.***...... | *.*.*.*.*.*.*.*.**.........*****.*.***..... | *.*.*.*.*.*.*.*.**...........****..*.*..... |
20250714 15:27:34 [INFO] | .*.*.*.*.*.*.*.*.**.........***.*.......... | .*.*.*.*.*.*.*.*.**........**.*.***..*..... | .*.*.*.*.*.*.*.*.**........*.***.*.***..... | .*.*.*.*.*.*.*.****........**..*..*.***.... |
20250714 15:27:34 [INFO] | *.*.*.*.*.*.*.*............*.**.**.***..... | *.*.*.*.*.*.*.*...*........**.*.**.***..... | *.*.*.*.*.*.*.**.*..........*.....**.*..... | *.*.*.*.*.*..*.*.*.........**..*..****..... |
20250714 15:27:34 [INFO] | .*.*.*.*.*.*.*.**.*........**..*.****.*.... | .*.*.*.*.*.**.*...........**...*.*.**...... | .*.*.*.*.*.****..*........*..*.*.****...... | .*.*.*.*.*.**...............*.*.****.*..... |
20250714 15:27:34 [INFO] | *.*.*.*.*.*......**........**.**...**...... | *.*.*.*.*.*..**.**........**..**..***...... | *.*.*.*.*.*..*.*..........**...*..***...... | *.*.*.*.*.*.*..................*..***...... |
20250714 15:27:34 [INFO] | .*.*.*.*.*.***.............*.*..******..... | .*.*.*.*.*.**...................******..... | .*.*.*.*.*.**.*................**.****..... | .*.*.*.*.*.***..................*.****..... |
20250714 15:27:34 [INFO] | *.*.*.*.*.**...................*.****...... | *.*.*.*.*.**.*...................****...... | *.*.*.*.*.**.....................****...... | *.*.*.*.*.**.*....................***...... |
20250714 15:27:34 [INFO] | .*.*.*.*.*...*.....................***..... | .*.*.*.*.*.......................*****..... | .*.*.*.*.*...*...................*****..... | .*.*.*..*..*.....................*****..... |
20250714 15:27:34 [INFO] | *.*.*.*.*.***.....................***...... | *.*.*.*.*..***....................***...... | *.*.*.*****........................***..... | *.*.*.**.*.........................****.... |
20250714 15:27:34 [INFO] | .*.*.*..*...*......................**.*.... | .*.*.*...*........................*........ | .*.*.*..*...*........................*..... | .*.*.*.**..........................*....... |
20250714 15:27:34 [INFO] | *.*.*.**............................**..... | *.*.*.**............................**..... | *.*.*.**...........................*....... | *.*.*...............................*...... |
20250714 15:27:34 [INFO] | .*.*.*.**..........................*....... | .*.*.*.**...........................*...... | .*.*.****............................*..... | .*.*.**.*.................................. |
20250714 15:27:34 [INFO] | *.*.*...*.................................. | *.*.**.*................................... | *..*.*.*................................... | *......**.................................. |
20250714 15:27:34 [INFO] | .**.*...................................... | .****..*................................... | .**........................................ |                                             |
20250714 15:27:34 [INFO] | *..**.**................................... |                                             |                                             |                                             |
...
Finally, a back corner? I noticed that the agar decays at 2c/4 in a very obvious way and decided to hope for a back corner between that and the sloped edge. I set up the search to connect to that decaying edge on its left edge and have the sloped edge on the top:

Code: Select all

$ cat n6.in
|                        |                        |                        |                        |
|                        |                        | BABAuuuuuuuuuuuuuuuRRR | .*.*.*.*.*.*.*..*.*... |
| BABAuuuuuuuuuuuuuuuRRR | *.*.*.*.*.*.*.***..... | *.*.*.*.*.*.*.**...... | *.*.*.*.*.*.*.**.*.... |
| .*.*.*.*.*.*.*.*...... | .*.*.*.*.*.*.**....... | .*.*.*.*.*.*.**.*..... | .*.*.*.*.*.*.**....... |
| *.*.*.*.*.*.*.***..... | *.*.*.*.*.*.*...*..... | *.*.*.*.*.*.*......... | *.*.*.*.*.*.*...*..... |
| .*.*.*.*.*.*.**.*..... | .*.*.*.*.*.*.***...... | .*.*.*.*.*.*..***..... | .*.*.*.*.*****........ |
| *.*.*.*.*..*..*....... | *.*.*.*.*..*...*...... | *.*.*.*.*...*......... | *.*.*.*.*..*...*...... |
| .*.*.*.*.**.*......... | .*.*.*.*.**........... | .*.*.*.*.**........... | .*.*.*.*.**........... |
| *.*.*.*.*.**.......... | *.*.*.*.*.**.......... | *.*.*.*.*.**.......... | *.*.*.*.****.......... |
| .*.*.*.*.............. | .*.*.*.*...*.......... | .*.*.*.**.*........... | .*.*..*.*.*........... |
| *.*.*.*.**.*.......... | *.*.**.*.............. | *.*.****..*........... | *.*.**................ |
| .*.*......**.......... | .*.*..**.**........... | .*.*..*.*............. | .*.*.*................ |
| *.*.***............... | *.*.**................ | *.*.**.*.............. | !!??????.............. |
| .*.**................. | !!??????.............. | !!??????.............. | !!??????.............. |
| !!??????.............. | !!??????.............. | !!??????.............. | !!??????.............. |
| !!??????.............. | !!??????.............. | !!??????.............. | !!??????.............. |
| !!??????.............. | !!??????.............. | !!??????.............. |                        |
| !!??????.............. |                        |                        |                        |
$ cat n6.edge
|    |    |    |    |
|    |    | .* | .* |
| *. | *. | *. | *. |
| .* | .* | .* | .* |
| *. | *. | *. | *. |
| .* | .* | .* | .* |
| *. | *. | *. | *. |
| .* | .* | .* | .* |
| *. | *. | *. | *. |
| .* | .* | .* | .* |
| *. | *. | *. | *. |
| .* | .* | .* | .* |
| *. | *. | *. | .* |
| .* | *. | .. | .. |
| .. | .. | .. | .. |
| .. | .. | .. | .. |
| .. | .. |    |    |
Even this fairly sloppy setup is enough to find the back corner (historically back corners, often found f2b, are almost always the easiest):

Code: Select all

$ rlife llsss-recentering --rule 'B3678/S34678' 2c4-f2b n6.in --right-pad 12 --fuzzy-right-edge --left-edge kgram:4:n6.edge --partials srv2 08
...
20250714 15:48:14 [INFO] End [thinnest] ("LlsssEndsAgar", "zero"):
20250714 15:48:14 [INFO] |             |             |             | BABAuuuuuuu |
20250714 15:48:14 [INFO] |             | BABAuuuuuuu | .*.*..**.** | .*.*..*.*.. |
20250714 15:48:14 [INFO] | *.*.**..... | *.*.***.... | *.*.**..... | *.*.**.*... |
20250714 15:48:14 [INFO] | .*.*.*..... | .*.**...... | .*.**.*.... | .*.**...... |
20250714 15:48:14 [INFO] | *.*.***.... | *.*...*.... | .*......... | ...*..*.... |
20250714 15:48:14 [INFO] | *..**.*.... | ....***.... | ...*.**.... | ....****... |
20250714 15:48:14 [INFO] | ..**..**... | ...*..**... | .....***... | .....*.*... |
20250714 15:48:14 [INFO] | ....**.*... | ....*.*.... | ...*..*.... | ......**... |
20250714 15:48:14 [INFO] | ....*****.. | ....*.*.*.. | ...*.*..... | ....*.*.... |
20250714 15:48:14 [INFO] | ......**... | ....*.*.... | .......*... | ........... |
20250714 15:48:14 [INFO] | .....*.*... | ........... | ........... | ........... |
20250714 15:48:14 [INFO] | ........... | ........... | ........... |             |
20250714 15:48:14 [INFO] | ........... |             |             |             |
...
The final ship, all stitched together and aligned:

Code: Select all

x = 206, y = 92, rule = B3678/S34678
37b4o4b4o8b4o4b4o8b4o4b4o8b4o4b4o8b4o4b4o8b4o4b4o8b4o4b4o$36bob4o2b4ob
o6bob4o2b4obo6bob4o2b4obo6bob4o2b4obo6bob4o2b4obo6bob4o2b4obo6bob4o2b
4obo$35bob2obob2obob2obo4bob2obob2obob2obo4bob2obob2obob2obo4bob2obob
2obob2obo4bob2obob2obob2obo4bob2obob2obob2obo4bob2obob2obob2obo$35b6ob
2ob6o4b6ob2ob6o4b6ob2ob6o4b6ob2ob6o4b6ob2ob6o4b6ob2ob6o4b6ob2ob6o$34b
7ob2ob7o2b7ob2ob7o2b7ob2ob7o2b7ob2ob7o2b7ob2ob7o2b7ob2ob7o2b7ob2ob7o$
35b4ob6ob4o4b4ob6ob4o4b4ob6ob4o4b4ob6ob4o4b4ob6ob4o4b4ob6ob4o4b4ob6ob
4o$35bo2bob2o2b2obo2bo4bo2bob2o2b2obo2bo4bo2bob2o2b2obo2bo4bo2bob2o2b
2obo2bo4bo2bob2o2b2obo2bo4bo2bob2o2b2obo2bo4bo2bob2o2b2obo2bo$35bo2b2o
6b2o2bo4bo2b2o6b2o2bo4bo2b2o6b2o2bo4bo2b2o6b2o2bo4bo2b2o6b2o2bo4bo2b2o
6b2o2bo4bo2b2o6b2o2bo$34b2o4b2o2b2o4b2o2b2o4b2o2b2o4b2o2b2o4b2o2b2o4b
2o2b2o4b2o2b2o4b2o2b2o4b2o2b2o4b2o2b2o4b2o2b2o4b2o2b2o4b2o2b2o4b2o$38b
3o4b3o10b3o4b3o10b3o4b3o10b3o4b3o10b3o4b3o10b3o4b3o10b3o4b3o$37bo2b6o
2bo8bo2b6o2bo8bo2b6o2bo8bo2b6o2bo8bo2b6o2bo8bo2b6o2bo8bo2b6o2bo$9b3o
24b6o2b6o6b6o2b6o6b6o2b6o6b6o2b6o6b6o2b6o6b6o2b6o6b6o2b6o24b3o$9b2obo
22b6ob2ob6o4b6ob2ob6o4b6ob2ob6o4b6ob2ob6o4b6ob2ob6o4b6ob2ob6o4b6ob2ob
6o22bob2o$10b3o23b2o3bo2bo3b2o6b2o3bo2bo3b2o6b2o3bo2bo3b2o6b2o3bo2bo3b
2o6b2o3bo2bo3b2o6b2o3bo2bo3b2o6b2o3bo2bo3b2o23b3o$5b9o3b4o13b3obo3b2o
3bob3o2b3obo3b2o3bob3o2b3obo3b2o3bob3o2b3obo3b2o3bob3o2b3obo3b2o3bob3o
2b3obo3b2o3bob3o2b3obo3b2o3bob3o13b4o3b9o$2b3o2bo2b4o3b2o2b3o17b4o16b
4o16b4o16b4o16b4o16b4o16b4o17b3o2b2o3b4o2bo2b3o$bob5obo2bo5b2o2b2o11b
2o12b2o4b2o12b2o4b2o12b2o4b2o12b2o4b2o12b2o4b2o12b2o4b2o12b2o11b2o2b2o
5bo2bob5obo$b4ob4o2bob10ob3o10bo3b2o3bo10bo3b2o3bo10bo3b2o3bo10bo3b2o
3bo10bo3b2o3bo10bo3b2o3bo10bo3b2o3bo10b4ob9obo2b4ob4o$6o2bo3bo3b9ob4o
8bobo4bobo10bobo4bobo10bobo4bobo10bobo4bobo10bobo4bobo10bobo4bobo10bob
o4bobo9b4ob8o3bo3bo2b6o$b5obobo2bob10ob2ob3o6bo2bo4bo2bo8bo2bo4bo2bo8b
o2bo4bo2bo8bo2bo4bo2bo8bo2bo4bo2bo8bo2bo4bo2bo8bo2bo4bo2bo6b2o2bobob9o
bo2bobob5o$o2b7o2bob2o2b5obo2bo3bo4b2ob3o2b3ob2o6b2ob3o2b3ob2o6b2ob3o
2b3ob2o6b2ob3o2b3ob2o6b2ob3o2b3ob2o6b2ob3o2b3ob2o6b2ob3o2b3ob2o5b2obob
o2b6o4bo2b7o2bo$4b4ob2o4bo3bo4b2o3b2o5bo2bo6bo2bo6bo2bo6bo2bo6bo2bo6bo
2bo6bo2bo6bo2bo6bo2bo6bo2bo6bo2bo6bo2bo6bo2bo6bo2bo4bo2bobobob2o3bo2bo
3b2ob4o$5b2o5bo4bob2ob2o4b2obo143bo8bo3bo4bo5b2o$5bo10bo6bo13b2o8b2o8b
2o8b2o8b2o8b2o8b2o8b2o8b2o8b2o8b2o8b2o8b2o8b2o4bob2o11bobo9bo$31b2o3b
4o6b4o6b4o6b4o6b4o6b4o6b4o6b4o6b4o6b4o6b4o6b4o6b4o6b4o$31bo4b3obo5b3ob
o5b3obo5b3obo5b3obo5b3obo5b3obo5b3obo5b3obo5b3obo5b3obo5b3obo5b3obo5b
3obobobo$31b3obob7obob7obob7obob7obob7obob7obob7obob7obob7obob7obob7ob
ob7obob7obob4ob3o$34bob2o2bo2b2ob2o2bo2b2ob2o2bo2b2ob2o2bo2b2ob2o2bo2b
2ob2o2bo2b2ob2o2bo2b2ob2o2bo2b2ob2o2bo2b2ob2o2bo2b2ob2o2bo2b2ob2o2bo2b
2ob2o2bo2b2ob2o2b3o$36b3ob2obo2b3ob2obo2b3ob2obo2b3ob2obo2b3ob2obo2b3o
b2obo2b3ob2obo2b3ob2obo2b3ob2obo2b3ob2obo2b3ob2obo2b3ob2obo2b3ob2obo2b
3ob3o$35bob3o3bobob3o3bobob3o3bobob3o3bobob3o3bobob3o3bobob3o3bobob3o
3bobob3o3bobob3o3bobob3o3bobob3o3bobob3o3bobob3o$35bo3bob3obo3bob3obo
3bob3obo3bob3obo3bob3obo3bob3obo3bob3obo3bob3obo3bob3obo3bob3obo3bob3o
bo3bob3obo3bob3obo3bo$37bo4bo4bo4bo4bo4bo4bo4bo4bo4bo4bo4bo4bo4bo4bo4b
o4bo4bo4bo4bo4bo4bo4bo4bo4bo4bo4bo$43b2o8b2o8b2o8b2o8b2o8b2o8b2o8b2o8b
2o8b2o8b2o8b2o8b2o$44bo9bo9bo9bo9bo9bo9bo9bo9bo9bo9bo9bo9bo$36b2o3b2o
8b2o8b2o8b2o8b2o8b2o8b2o8b2o8b2o8b2o8b2o8b2o8b2o5b2o$35b2ob2o3b2ob4o3b
2ob4o3b2ob4o3b2ob4o3b2ob4o3b2ob4o3b2ob4o3b2ob4o3b2ob4o3b2ob4o3b2ob4o3b
2ob4o3b2ob2ob2o$28b2o4b5o2b3o3b2o2b3o3b2o2b3o3b2o2b3o3b2o2b3o3b2o2b3o
3b2o2b3o3b2o2b3o3b2o2b3o3b2o2b3o3b2o2b3o3b2o2b3o3b2o2b3o3b5o4b2o$27b3o
b3o2b3o2b2o3bobo2b2o3bobo2b2o3bobo2b2o3bobo2b2o3bobo2b2o3bobo2b2o3bobo
2b2o3bobo2b2o3bobo2b2o3bobo2b2o3bobo2b2o3bobo2b2o3bo2b2ob3ob3o$26b4o3b
3o3bo2bo2bobobo2bo2bobobo2bo2bobobo2bo2bobobo2bo2bobobo2bo2bobobo2bo2b
obobo2bo2bobobo2bo2bobobo2bo2bobobo2bo2bobobo2bo2bobobo2bo2bob2o2b2o3b
4o$26b2obobo2bo2b2obobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobob3o4b4o$26bob2obo2b2o3bobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobob6o2b3o$29bo3bobo2bobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobo3bob6o$28bobo2b2o2bobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobob7o$28bo2b6o3bobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobo2bobobo2b2o$29b3o2bo4b2obo2bobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobob2obo2b3obob2obo$29bo3bob3o5b2o
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobo2b2ob3obobob3o$28b4ob3ob
o5bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobob2o7b2obo2bo$27bobo
2bobobo5b3obobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobob2obo4b4o2bobo$
28bobob2o2b2o4bob2obobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo11bobob
obo$29b3o2b3o7bo2bo2bobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo2b3o4bob3o
3bo$29b2o3bo2bo8bob2obobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobo3bo9b4o$33bob
3o9b2obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobob2o9b5obob3o$28b3ob2ob2obo
12bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobob2o8bob3obob3o$27bob4obo2b2o8bob
2obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobob2obo10bo5b2obo$29b2o3b2ob2o8b2o6bob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobob4o2bo8bo2bobob4o$28b6o2bobo13b3obobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobo2bobo10b2o3bo2b3o$29b4obo19b2obobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob2ob
o16b2ob4o$28b3o21bo3bobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobob2o21b4o$29b3o21b3obobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobo3bo19b5o$27bob2o22bo3bo2bobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobob5o24b3o$28b
2o28b2obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobo2bo3bo24bo$30bo26b2obobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobob2o27bo$57b
o3bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo
bobobobobobobobob4o28bo$61bob2obobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobo2bobobo$58b2ob2o2bobobobobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob2o$63b2ob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobo$62bob2obobobobobobobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobob3o$66bobobobobobobobobobobobobobobobobobobobobobob
obobobobobobobobobobobobobobob2obo$62b3o2bobobobobobobobobobobobobobob
obobobobobobobobobobobobobobobobobobobobo2bo2bo$66bo3bobobobobobobobob
obobobobobobobobobobobobobobobobobobobobobobobobob2obo$68b2obobobobobo
bobobobobobobobobobobobobobobobobobobobobobobobobobobobob2o$67b2obobob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobo$68bob2ob
obobobobobobobobobobobobobobobobobobobobobobobobobobobobobobob2obo$68b
o2b4obobobobobobobobobobobobobobobobobobobobobobobobobobobobo6b2o$70bo
bo2bobobobobobobobobobobobobobobobobobobobobobobobobobobobob3o$71bob2o
bobobobobobobobobobobobobobobobobobobobobobobobobobobob2o$74b2obobobob
obobobobobobobobobobobobobobobobobobobobobobobo3bo$72bo3bobobobobobobo
bobobobobobobobobobobobobobobobobobobobob3o$75b5obobobobobobobobobobob
obobobobobobobobobobobobo2bo3bo$73bo3bo2bobobobobobobobobobobobobobobo
bobobobobobobobob2o$78b2obobobobobobobobobobobobobobobobobobobobobobob
ob2o$77b4obobobobobobobobobobobobobobobobobobobobobobo3bo$78bobobo2bob
obobobobobobobobobobobobobobobobob2obo$83b2obobobobobobobobobobobobobo
bobobobobo2b2ob2o$83bobobobobobobobobobobobobobobobobobobob2o$82b3obob
obobobobobobobobobobobobobobobob2obo$82bob2o2bobobobobobobobobobobobob
obobobo$81b2o2b2o33bob2o$81bob2o37b3o$80b5o35bo2bo$81b2o37bobo$81bobo
40bo!

User avatar
Sylvani
Posts: 146
Joined: September 26th, 2024, 3:23 am

Re: amling search program principles discussion / brain dump

Post by Sylvani » August 2nd, 2025, 6:54 pm

amling wrote:
July 14th, 2025, 7:35 pm

I decided to try to find a Day & Night checkerboard agarship as a demo of some of the various search structures that can be used to find parts of agar ships. 2c/4 seemed the simplest/smallest choice for compatible velocity so I went for that.
I tried following these steps to find an agarship in Seeds, to no avail. Here's the .in file I am using to try and find the left edge of a 2c/2 agar stabilization:

Code: Select all

|  ZZZZZZZZZZZZZZZ | ZZZZZZZZZZZZZZZZ  |
|  ...*.*.*.*..... | ....*...........  |
|  ..*..*.*.*.*... | ...*............  |
|  ..*............ | ...*..*.*.*.*...  |
|  ...*........... | ....*.*.*.*.....  |
|  .....*.*.*..... | ................  |
|  .....*.*.*.*... | ................  |
|  ...*........... | ....*.*.*.*.*...  |
|  ..*............ | ...*..*.*.*.....  |
|  ..*..*.*.*..... | ...*............  |
|  ...*.*.*.*.*... | ....*...........  |
|  ....???????.... | .....???????....  |
|  ....???????.... | .....???????....  |
|  ....???????.... | .....???????....  |
|  ....???????.... | .....???????....  |
It produces an error that says this:

Code: Select all

thread 'main' panicked at src/lat/geom.rs:575:32:
no entry found for key
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Normally this happens when there's a missing grid piece or something (from what I can understand), but I am confused as to why it shows up when the grid looks correct. Can you (amling) see what's wrong with the file?

EDIT: I tried imitating the structure at one of the steps, before I posted this. Here is the file that I tried using before. (It's still broken)

Code: Select all

|  LLuuuuuABABuuRR | LLLuuuuuABABuuRR  |
|  ...*.*.*.*..... | ....*...........  |
|  ..*..*.*.*.*... | ...*............  |
|  ..*............ | ...*..*.*.*.*...  |
|  ...*........... | ....*.*.*.*.....  |
|  .....*.*.*..... | ................  |
|  .....*.*.*.*... | ................  |
|  ...*........... | ....*.*.*.*.*...  |
|  ..*............ | ...*..*.*.*.....  |
|  ..*..*.*.*..... | ...*............  |
|  ...*.*.*.*.*... | ....*...........  |
|  ....???????.... | .....???????....  |
|  ....???????.... | .....???????....  |
|  ....???????.... | .....???????....  |
|  ....???????.... | .....???????....  |
EDIT: It seems that I am a complete idiot and forgot to remove an extra left-edge piece from one of the phases. My bad. It's still broken, though.

Code: Select all

|  LLuuuuuABABuuRR | LLuuuuuABABuuRR  |
|  ...*.*.*.*..... | ...*...........  |
|  ..*..*.*.*.*... | ..*............  |
|  ..*............ | ..*..*.*.*.*...  |
|  ...*........... | ...*.*.*.*.....  |
|  .....*.*.*..... | ...............  |
|  .....*.*.*.*... | ...............  |
|  ...*........... | ...*.*.*.*.*...  |
|  ..*............ | ..*..*.*.*.....  |
|  ..*..*.*.*..... | ..*............  |
|  ...*.*.*.*.*... | ...*...........  |
|  ....???????.... | ....???????....  |
|  ....???????.... | ....???????....  |
|  ....???????.... | ....???????....  |
|  ....???????.... | ....???????....  |

...

thread 'main' panicked at src/lat/geom.rs:607:22:
explicit panic
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
EDIT: Once again, I failed to notice an obvious flaw. I was using llsss-recentering-wao instead of llsss-recentering.

amling
Posts: 1154
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling » August 3rd, 2025, 11:06 pm

Sylvani wrote:
August 2nd, 2025, 6:54 pm
I tried following these steps to find an agarship in Seeds, to no avail...
Unfortunately I'm out of town for a bit and so can only immediately explain by way of my cell phone. Sounds like you got it mostly working which is good. I'm guessing that the search you really mean to run is the same with an extra (third) L and R on their respective sides.

LLSSS generally chops the board up into width 3 pieces (really width AF2 which is 3 by default and is the right choice for most geometries). So if your board is LLuuuRR the u's are all special-cased unique so that's like LL123RR. The 3-grams are thus LL1, L12, 123, etc. These cannot be recombined in any interesting way and so this is effectively a fixed board. In contrast LLL123RRR has 3-grams LLL, LL1, L12, etc. and so the LLL 3-gram can be repeated, expanding the board on the left endlessly.

You can see another example of this recombination in your input as-is where the ABAB part generates 3-grams including ABA and BAB which can be recombined endlessly, allowing it to search for sides of ships thay have repeated that AB part any nonzero number of times.

I will try to remember to come back to this when I'm back at a real computer and make a very explicit demo of the difference between repeatable and not and to make sure you get as much 2c/2 agar ship success as we can manage.

Sokwe
Moderator
Posts: 3367
Joined: July 9th, 2009, 2:44 pm

Re: amling search program principles discussion / brain dump

Post by Sokwe » August 7th, 2025, 5:31 pm

I ran a c2d-s2s search in B2458/S1267 which found a bilaterally symmetric solution that contained a seemingly undetected glide-symmetric portion. The search was the following:

Code: Select all

./rlife llsss-recentering-wao --rule 'B2458/S1267' c2d-s2s '@bg' 15 --ends odd,gse --pre-reify-autochoke 200MB
With the following environment variable settings

Code: Select all

LLSSS_HALT_ON_ENDS: true (from environment variable)
LLSSS_HOLLOW_PRESPLIT_TARGET: 100 (default)
LLSSS_INIT_CA_CHECKS: true (default)
LLSSS_MAX_TABLE_SIZE: 15 (from environment variable)
LLSSS_RC_ENDS_FULL: true (default)
The reported ship is on the left, with the glide symmetric component highlighted, while the ship I would expect to have been found first is shown at right with the same glide-symmetric component highlighted:

Code: Select all

x = 329, y = 159, rule = B2458/S1267History
149.A169.A$147.2A.4A163.2A.4A$146.A.A4.2A161.A.A4.2A$144.A.A3.A4.2A
157.A.A3.A4.2A$144.2A3.2A.2A.3A156.2A3.2A.2A.3A$144.A2.A3.2A.A.2A156.
A2.A3.2A.A.2A$143.A3.A2.A.A2.3A155.A3.A2.A.A2.3A$141.2A2.2A3.3A4.A
153.2A2.2A3.3A4.A$143.A2.2A.A4.4A155.A2.2A.A4.4A$141.A.4A.A.A2.5A153.
A.4A.A.A2.5A$140.5A.A2.4A5.A151.5A.A2.4A5.A$140.A.A.2A3.A.A158.A.A.2A
3.A.A$138.A6.A3.A158.A6.A3.A$137.A2.2A4.A.A158.A2.2A4.A.A$134.3A3.A3.
A2.2A155.3A3.A3.A2.2A$132.A.A.2A.3A.A2.A2.A152.A.A.2A.3A.A2.A2.A$132.
A6.2A4.A156.A6.2A4.A$129.9A2.A2.3A153.9A2.A2.3A$127.A.A.2A5.A2.5A151.
A.A.2A5.A2.5A$127.A4.A.A.2A3.A2.2A151.A4.A.A.2A3.A2.2A$124.4A3.5A2.A.
2A.A150.4A3.5A2.A.2A.A$126.2A.2A2.2A.3A3.A.A151.2A.2A2.2A.3A3.A.A$
123.2A2.3A.A2.2A2.A2.A.A149.2A2.3A.A2.2A2.A2.A.A$123.A2.A2.A3.2A.A3.A
152.A2.A2.A3.2A.A3.A$123.3A.A2.A2.2A3.4A2.A148.3A.A2.A2.2A3.4A2.A$
121.3A6.A.2A.A.3A.A2.A.A144.3A6.A.2A.A.3A.A2.A.A$123.4A.2A.A.2A.2A2.A
3.A148.4A.2A.A.2A.2A2.A3.A$126.4A4.3A.A2.A154.4A4.3A.A2.A$118.4A2.A2.
A2.A2.A.2A3.3A145.4A2.A2.A2.A2.A.2A3.3A$120.3A.A.A2.A.2A4.A2.2A148.3A
.A.A2.A.2A4.A2.2A$121.A.2A3.A6.A.A.2A150.A.2A3.A6.A.A.2A$115.4A.A.3A
8.7A145.4A.A.3A8.7A$117.3A.2A.3A2.4A2.A151.3A.2A.3A2.4A2.A$114.2A4.A
3.2A.A.A2.2A150.2A4.A3.2A.A.A2.2A$111.A2.A3.2A6.A.A.A150.A2.A3.2A6.A.
A.A$111.A2.2A.A.3A3.2A2.A151.A2.2A.A.3A3.2A2.A$108.5A.3A.A2.3A.5A4.A
143.5A.3A.A2.3A.5A4.A$110.2A5.A.A.A.A6.A149.2A5.A.A.A.A6.A$107.2A4.A
4.A.4A153.2A4.A4.A.4A$106.A5.5A2.A.A4.A149.A5.5A2.A.A4.A$101.A2.A.A2.
2A2.8A2.A147.A2.A.A2.2A2.8A2.A$101.8A.2A2.3A2.2A2.A147.8A.2A2.3A2.2A
2.A$100.A.A.2A3.A.6A3.3A2.A.A142.A.A.2A3.A.6A3.3A2.A.A$95.A5.2A2.A.A
4.A2.A4.A.A2.A139.A5.2A2.A.A4.A2.A4.A.A2.A$93.2A.6A3.A.A.2A3.3A2.2A.A
140.2A.6A3.A.A.2A3.3A2.2A.A$93.2A4.A3.3A.2A3.2A.A.A.2A6.A135.2A4.A3.
3A.2A3.2A.A.A.2A6.A$91.A2.3A.A.2A3.2A2.A4.A.2A.A.A139.A2.3A.A.2A3.2A
2.A4.A.2A.A.A$91.A2.A3.A9.A.A2.A.A2.A142.A2.A3.A9.A.A2.A.A2.A$88.5A2.
3A4.2A.A2.2A.3A2.A141.5A2.3A4.2A.A2.2A.3A2.A$90.2A3.4A4.7A2.5A4.A138.
2A3.4A4.7A2.5A4.A$87.2A2.A6.A2.2A.A4.2A6.A139.2A2.A6.A2.2A.A4.2A6.A$
85.2A2.A2.2A2.2A2.A154.2A2.A2.2A2.2A2.A$84.A.2A4.A.A.A.4A8.A143.A.2A
4.A.A.A.4A8.A$82.2B3.2A.2A.2A2.A.A.A150.2B3.2A.2A.2A2.A.A.A$81.3BCA.A
2.A.A2.A2.A2.2A148.3BCA.A2.A.A2.A2.A2.2A$80.3B3C2A.2A2.A156.3B3C2A.2A
2.A$79.2B2CB2CB7A7.A2.A144.2B2CB2CB7A7.A2.A$78.2BCB3C2BC6.A153.2BCB3C
2BC6.A$77.8BCBCB158.8BCBCB$78.C4B2CB2C2B158.C4B2CB2C2B$76.2A.B2CBC3BC
3B155.2A.B2CBC3BC3B$76.3A.CBC3B3C2B154.A.2A.CBC3B3C2B$75.A4.AB2CBCBC
2B158.A.AB2CBCBC2B$73.A.A3.A2.7B156.2A5.7B$73.A3.2A3.A2BC2B154.6A.A2.
A2BC2B$72.A.A.3A5.3B157.A.A2.A4.3B$67.A.A2.3A2.A7.B155.2A2.2A.A6.B$
66.A2.A2.3A166.A5.A.A$70.2A.2A164.A2.A.2A2.A.A$66.2A7.A162.A2.A.A.A3.
A$68.A.A2.3A2.A165.3A2.A2.A$68.A5.A.A.2A158.2A7.3A$65.3A6.A.A2.2A158.
4A2.2A2.A$63.2A.3A.A2.2A.A2.A159.2A.A4.A.A$65.4A.5A3.A161.4A2.A.2A$
62.2A5.2A4.A.2A159.A2.A.2A.A2.A$60.2A3.A5.3A2.A2.A155.A.2A2.2A2.A4.A$
60.2A2.3A8.A159.A4.2A3.2A2.A$59.A.A2.2A4.2A2.2A159.A3.A.A.3A.3A$63.A
7.3A2.A158.A4.3A2.2A3.A$57.A2.3A9.A165.2A.A.A$56.A3.A175.A8.A$56.2A3.
2A.A168.2A3.A4.A$55.A.A.2A.A170.3A.2A2.A.A$52.A.4A.A170.4A3.3A.A3.A$
51.A2.3A.A3.A.A167.2A2.2A.2A.A$51.2A2.A3.A.A167.2A2.2A2.3A.A.3A$50.A.
11A166.A4.2A2.A.2A2.3A$48.A.A2.A2.A4.A167.2A.2A.2A3.A.A2.A$48.A2.A3.
2A171.A.A7.2A.A$48.2A3.4A171.A4.4A3.A.A$46.5A2.A2.A168.5A7.2A2.A.A$
48.A2.2A.A.A170.2A.A4.2A.A3.A$44.2A5.A.A.2A172.A.A2.A.4A2.A2.A$44.4A
4.2A3.A164.4A2.A.A.A.A.A3.3A$43.A2.A.2A4.A169.A.A.A2.A.A3.2A3.A$44.A.
A.2A.2A172.A.A.A2.A8.2A$44.A3.2A.A.A165.4A3.A9.A2.3A$44.A.2A.2A.A.A
162.A.A.2A5.A.A.A.A.A2.2A$44.2A6.2A163.A6.3A3.2A.A.2A2.A$42.A.A.A4.2A
161.4A4.2A7.5A2.A$40.2A.2A.A3.A.3A.A159.A.3A.5A2.A2.A4.2A$41.3A4.A.A
3.A158.2A2.A2.A2.2A.A.A7.A2.A$41.A3.A2.2A163.A4.2A.A3.3A.A$40.3A2.A3.
2A5.A156.3A2.2A3.A.2A.A.A$41.6A.2A161.3A.A4.A2.3A.A.A$39.3A4.A2.A163.
A3.3A.2A2.A2.2A2.A$38.A2.A.3A3.A160.2A2.A.3A.3A.2A2.2A$36.A.A2.A3.A.
3A160.A5.A2.A.A2.A4.A$36.A3.A.A.A.A.3A159.A4.A.A4.3A.4A$36.2A2.2A2.A
2.A2.A.A155.6A2.A6.A.A.2A$34.4A3.2A5.A161.5A3.2A2.A$36.A2.A2.2A.A2.2A
161.5A.2A.A3.A2.A$38.3A.A2.A.3A157.7A3.A.A2.3A$33.4A2.4A.A.A2.A157.2A
2.A.A3.A3.3A$31.A.A.2A2.7A.A.A155.A3.A2.2A2.A.A2.A2.A2.A$31.A4.A2.4A.
A.A.2A153.A2.A.A5.2A.A4.A$31.2A2.A.A2.A4.2A3.A150.2A3.4A.2A3.3A$28.A
2.2A.A.A.A.A6.A155.A3.A2.A.A2.A3.3A$28.A3.A.2A.A.3A2.3A151.A2.A3.3A.
2A3.A.4A.2A$28.2A.A.A.A2.A.6A152.A4.A.A2.2A.3A.7A$25.A2.3A.A2.5A2.A3.
A2.A148.A3.A17.A$25.A3.A.2A3.A.A3.3A151.3A2.A6.A.A3.A$22.5A3.2A4.3A.
2A153.A.A.4A.A2.2A$20.A.A.A.A.6A163.3A.A$20.A3.A.A5.2A.2A5.2A151.5A.A
2.A2.A2.A$20.2A.A2.2A.A2.A.3A2.A156.A.A.A2.A$18.5A.A2.2A4.A2.A5.A2.A
150.2A.A3.2A$22.A3.2A2.A3.A.A160.A4.A$17.2A2.3A2.2A.A2.2A.2A158.A2.A.
2A.A$17.A3.A2.2A2.A3.A.A2.A160.2A.A$17.2A.A.A3.A2.A2.A169.A$15.6A4.A
3.A2.2A163.A.2A2.A$17.A2.2A.4A.A2.A.A$14.2A.A.6A.2A3.A4.A162.A5.A$14.
A2.A2.A.A2.A.2A.3A$14.2A.A.A.A.A2.3A2.A$13.A.A.A.A.A3.2A2.3A$12.A5.A.
3A.2A.A3.A$15.2A7.2A4.2A$10.2A.5A2.A2.2A.A.3A$7.A.2A2.A.A2.3A.A.2A.3A
$7.A2.2A6.A2.A6.A$6.A.3A4.A.2A.A.A$3.3A3.3A2.A2.3A.A2.3A$4.A2.A.A.2A
3.4A$2.2A3.4A2.A.A9.A$.A3.2A.A5.A$.2A6.A3.2A$A3.A3.A.3A2.A$.A.2A.2A.
2A$.A3.A.A2.2A$.A2.4A2.A$.2A.A4.A$2.A2.A2.2A$3.2A.A.2A$3.4A.2A$4.6A$
10.A!
Unfortunately, I was not using quite the latest version of rlife (my version is from February 18, 2025), and I have not retested with the latest version.

Do you know why it might have missed the glide-symmetric solution? My personal speculation was that it's some combination of autochoke and needing more W rows to detect glide symmetry than I would expect, but I really don't know. I tried other c2d-s2s searches using the gse end which successfully found glide symmetric solutions.
-Matthias Merzenich

amling
Posts: 1154
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling » August 9th, 2025, 5:42 pm

Sokwe wrote:
August 7th, 2025, 5:31 pm
I ran a c2d-s2s search in B2458/S1267 which found a bilaterally symmetric solution that contained a seemingly undetected glide-symmetric portion.
Well, that's maybe bad. I will look into it when I get back to a real computer (soon). The only thing I can think of is the apparent GSE portion may not actually be GSE in whatever W alignment it came in at. The diagonal s2s geometries are weird like that where what would be considered GSE won't be if it's shifted half W (e.g. by just 1 X or 1 Y). You'd think it would be found shifted one half W down then but maybe that variant didn't survive autochoke. I'm not gonna try to count cells and reason about geometry on my cell phone so I will have to owe the world a real answer later.

amling
Posts: 1154
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling » August 10th, 2025, 2:06 pm

amling wrote:
August 9th, 2025, 5:42 pm
Sokwe wrote:
August 7th, 2025, 5:31 pm
I ran a c2d-s2s search in B2458/S1267 which found a bilaterally symmetric solution that contained a seemingly undetected glide-symmetric portion.
Well, that's maybe bad. I will look into it when I get back to a real computer (soon).
I'm back to a real computer and now taking a closer look at this. Thanks as always for the extremely detailed and thoughtful report which made digging into this a breeze.

I'm pretty sure I've read the situation right. I ran this search exactly as specified with the maybe more recent 990f8a857c6f and indeed got that same first result. Marking the center two half diagonals with o's:

Code: Select all

End [thinnest] "LlsssEndsReflect(Odd)":
|                                                                                  Z                        |                                                                                 ZZ                        |
|                                                                                 .ZZ                       |                                                                                ..ZZ                       |
|                                                                                ...ZZ                      |                                                                               ....ZZ                      |
|                                                                               .....ZZ                     |                                                                              ......ZZ                     |
|                                                                              .......ZZ                    |                                                                             ........ZZ                    |
|                                                                             .........ZZ                   |                                                                            ..........ZZ                   |
|                                                                            ...........ZZ                  |                                                                           ............ZZ                  |
|                                                                           .............ZZ                 |                                                                          ..............ZZ                 |
|                                                                          ...............ZZ                |                                                                         ................ZZ                |
|                                                                         .................ZZ               |                                                                        ..................ZZ               |
|                                                                        ...................ZZ              |                                                                       ....................ZZ              |
|                                                                       .....................ZZ             |                                                                      ......................ZZ             |
|                                                                      .......................ZZ            |                                                                     ........................ZZ            |
|                                                                     .........................ZZ           |                                                                    ..........................ZZ           |
|                                                                    ...........................ZZ          |                                                                   ............................ZZ          |
|                                                                   .............................ZZ         |                                                                  ..............................ZZ         |
|                                                                  ....................*..........ZZ        |                                                                 ...................*.*...*......ZZ        |
|                                                                 ...................**.****.......ZZ       |                                                                ...................*..***.........ZZ       |
|                                                                ...................*.*....**.......ZZ      |                                                               ....................****.**...*.....ZZ      |
|                                                               ..................*.*...*....**......ZZ     |                                                              ..................****.***..**........ZZ     |
|                                                              ...................**...**.**.***......ZZ    |                                                             .......................***.*..*.*.*.....ZZ    |
|                                                             ....................*..*...**.*.**.......ZZ   |                                                            ........................*..*..*..*........ZZ   |
|                                                            ....................*...*..*.*..***........ZZ  |                                                           ...................*.*..****...**...........ZZ  |
|                                                           ...................**..**...***....*.........ZZ |                                                          ....................*...*.*....*..*...........ZZ |
|                                                          ......................*..**.*....****..........Z |                                                         ....................*.*.*.....**.*..*...........  |
|                                                         .....................*.****.*.*..*****..........  |                                                        ............................*.*.*...............   |
|                                                        .....................*****.*..****.....*........   |                                                       .....................*...**.............*.......    |
|                                                       ......................*.*.**...*.*..............    |                                                      .......................**.*.....................     |
|                                                      .....................*......*...*...............     |                                                     .....................**..***...*.*..............      |
|                                                     .....................*..**....*.*...............      |                                                    ...................*..**.**..*.**...............       |
|                                                    ...................***...*...*..**..............       |                                                   ....................*..*.*.*.**.................        |
|                                                   ..................*.*.**.***.*..*..*............        |                                                  ..................*****.*....**..*..*...........         |
|                                                  ...................*......**....*...............         |                                                 .................*.*..*****..*..*...............          |
|                                                 .................*********..*..***..............          |                                                ..................*....****.*.**.*..............           |
|                                                ................*.*.**.....*..*****.............           |                                               ................*****...******....*.............            |
|                                               .................*....*.*.**...*..**............            |                                              ...............*.*.*..*...**...*..*..*..........             |
|                                              ...............****...*****..*.**.*.............             |                                             ................*...**...*..*...*.*.*...........              |
|                                             ..................**.**..**.***...*.*...........              |                                            .................**.....**.*....*.*.**..........               |
|                                            ................**..***.*..**..*..*.*...........               |                                           ................***.*...**.*..***.**.**.........                |
|                                           .................*..*..*...**.*...*.............                |                                          ....................*.**.**...**..*.*.**........                 |
|                                          ..................***.*..*..**...****..*........                 |                                         .................**..*.**.*.*..*.*....***.......                  |
|                                         .................***......*.**.*.***.*..*.*.....                  |                                        ..................*...**..*.*....*.....*.**.....                   |
|                                        ....................****.**.*.**.**..*...*......                   |                                       ...................**....*..***.....**..***.....                    |
|                                       ........................****....***.*..*........                    |                                      .................*..**.**....**.*.*.**.*..*.....                     |
|                                      .................****..*..*..*..*.**...***......                     |                                     ..................*.....***.**...**..**.........                      |
|                                     ....................***.*.*..*.**....*..**......                      |                                    ...................**...*.**..*.***..**.*.......                       |
|                                    ......................*.**...*......*.*.**......                       |                                   .................*..*.*..*.*.*****..*...........                        |
|                                   .................****.*.***........*******......                        |                                  ..................*...*.*.*.****....*...........                         |
|                                  ....................***.**.***..****..*.........                         |                                 ...................**...*......*.*...**.*..*....                          |
|                                 ..................**....*...**.*.*..**..........                          |                                ..................****.**..*...*.*.**.**........                           |
|                                ................*..*...**......*.*.*............                           |                               ................***..*.*..*....*.*.*****........                            |
|                               .................*..**.*.***...**..*............                            |                              ...............*.*.**..*.*...**....*............                             |
|                              ...............*****.***.*..***.*****....*......                             |                             ................*........*.*...**...............                              |
|                             ..................**.....*.*.*.*......*.........                              |                            .................**..*.....*.*.*.**....*........                               |
|                            ................**....*....*.****...............                               |                           ................*****.*.*....*...**.............                                |
|                           ................*.....*****..*.*....*...........                                |                          .................**..**..*..**...*.*............                                 |
|                          ............*..*.*..**..********..*.............                                 |                         ............****...*...**.*.*......**...........                                  |
|                         .............********.**..***..**..*............                                  |                        ..................*...*..*.*.***..***..*........                                   |
|                        .............*.*.**...*.******...***..*.*.......                                   |                       ..............*......****....*.*.*.....*........                                    |
|                       .........*.....**..*.*....*..*....*.*..*........                                    |                      ........*.*...**...*.***.**.*.***.*....**.......                                     |
|                      ........**.******...*.*.**...***..**.*..........                                     |                     ........*..***....*.*...***..*...*...***..*.....                                      |
|                     .........**....*...***.**...**.*.*.**......*....                                      |                    .............***..*.*.....*.**.*...*..**........                                       |
|                    ........*..***.*.**...**..*....*.**.*.*.........                                       |                   ........**.*..*.*******..**.**.*.*..*.**........                                        |
|                   .........*..*...*.........*.*..*.*..*...........                                        |                  .......*.*.*...***.*..*.....*..*.*.*****........                                         |
|                  .......*****..***....**.*..**.***..*............                                         |                 ........*....*....**..*.*.**..*....*............                                          |
|                 ..........**...****....*******..*****....*......                                          |                .........**..*.*....*..*.......**...............                                           |
|                ........**..*......*..**.*....**......*.........                                           |               .......*.**.*.***.*...****.*..*.***....*........                                            |
|               .......**..*..**..**..*.........................                                            |              .......*..****...*.*.**.*.*.......*.............                                             |
|              .......*.**....*.*.*.****........*..............                                             |             ........**..*..*...*.*....*.....................                                              |
|             ...........**.**.**..*.*.*......................                                              |            ........*.**...*.*..*..*...*....................                                               |
|            .........**.*..*.*..*..*..**....................                                               |           ..............**.*.*******.**...................                                                |
|           .........*****.**..*............................                                                |          ........*..***.....*.......*..*.................                                                 |
|          ........o*.**.*******.......*..*................                                                 |         ........o...*...................................                                                  |
|         ........*.o**..*......*.........................                                                  |        .........*o...**.*.....*........................                                                   |
|        ..............*.*...............................                                                   |       .........*.*.o*.*...............................                                                    |
|       ........*....oo.**..............................                                                    |      .......*.****.o.................................                                                     |
|      .......**..**.*...*.............................                                                     |     .......*..***.*...*.*...........................                                                      |
|     ........***.*.*...o**...........................                                                      |    ...........**...*.o.............................                                                       |
|    ........*....*.**.*.o...........................                                                       |   .........**..*******o...........................                                                        |
|   .......*.*...*..................................                                                        |  .......****.*.**....*...........................                                                         |
|  ........*...**...*..*...........................                                                         | ..........*.*...................................                                                          |
|  .......*.*.***.................................                                                          |  ...*..*.......*...............................                                                           |
|   .*.*..***..*.................................                                                           |   **.**..*.*..................................                                                            |
|    ..*..***...................................                                                            |    *.***.*...................................                                                             |
|     ..**.**..................................                                                             |     *****...................................                                                              |
|      ......*................................                                                              |      ....*..*..............................                                                               |
|       *..***..*............................                                                               |       ...*....*...........................                                                                |
|        ...*.*.**..........................                                                                |        ..*..**...........................                                                                 |
|         ..*.*..**........................                                                                 |         .*..***.........................                                                                  |
|          **.*..*........................                                                                  |          ..**..........................                                                                   |
|           *...*........................                                                                   |           .*.*........................                                                                    |
|            *.**.......................                                                                    |            *.........................                                                                     |
|             *..*.....................                                                                     |             ...*....................                                                                      |
|              .......................                                                                      |              ......................                                                                       |
|               .....................                                                                       |               ....................                                                                        |
|                ...................                                                                        |                ..................                                                                         |
|                 .................                                                                         |                 ................                                                                          |
|                  ...............                                                                          |                  ..............                                                                           |
|                   .............                                                                           |                   ............                                                                            |
|                    ...........                                                                            |                    ..........                                                                             |
|                     .........                                                                             |                     ........                                                                              |
|                      .......                                                                              |                      ......                                                                               |
|                       .....                                                                               |                       ....                                                                                |
|                        ...                                                                                |                        ..                                                                                 |
|                         .                                                                                 |                                                                                                           |
If you feed that straight through "from-uwi" it gets aligned wrong (i.e. is not what the search had), but if you shift it down one (blank) line you get:

Code: Select all

| ZZZZZZZZZZZZZZZZZZZZZZZZ | ZZZZZZZZZZZZZZZZZZZZZZZZ | ZZZZZZZZZZZZZZZZZZZZZZZZ | ZZZZZZZZZZZZZZZZZZZZZZZZ |
| ........................ | ........................ | ........................ | ........................ |
| ........................ | ........................ | ........................ | ........................ |
| ........................ | ........................ | ........................ | ...............*.*...... |
| ...............**....... | ............*........... | ............*****....... | ................*....... |
| ............**.***...... | ..............*.*....... | ...........*....**...... | ............****........ |
| ..........**..***.*..... | ..........***........... | .............*...***.... | ...........*...****.*... |
| ..........*.*.*..**..... | .........*.***.*........ | .........**.***.**...... | ...........**........... |
| ............*..*.*...... | .........*****.**....... | .........*...**.*....... | ..........*.*........... |
| ..........*...*......... | ..........**.*.*........ | ...........*....*....... | ..........*.**.**....... |
| .........**.*.***....... | .........*..*........... | .........*.....**....... | .........*..**.*........ |
| ..........*.****........ | ........................ | ...........**..*........ | ............*.*......... |
| ..........*..*..*....... | ..........*.....*....... | ............**.......... | ............*........... |
| ..........***...*....... | .........*.....*........ | .........*.***..**...... | ..........**.*..*.*..... |
| ............*****....... | ............*..*........ | ..........**............ | ..........*..*.......... |
| ...........**...*....... | .............**.*....... | ..........*...*......... | ............**.*........ |
| ...........*....*....... | ..........***.*......... | ............*.*.*....... | .............*.**....... |
| ............*...**...... | ............***.*.*..... | ..........*.**.***...... | ...........*.....*...... |
| .............*..**...... | ..........***.**........ | ..........*.**.*........ | ...........*...*.**..... |
| .............***.**..... | ...........*......*..... | ..........**...*........ | ............***..***.... |
| ..........**....***..*.. | .........*..*.**..**.... | .........*..**.*...*.... | ..........*****.**.***.. |
| ..........*.*....*..*... | ..........****...*.**... | ...........*.**.....*... | ..........****..****.*.. |
| .........*.*.*.*.**..... | .........*.***.....**... | .........**...**.**..... | .........*..***.**..**.. |
| ..........*.***..*...... | .........*.....*........ | .........**.*...*****... | ...............*........ |
| .........*******.*..*... | ........*...**.**.**.... | ........*..***..*..**... | .........***...*..*..... |
| .........*.*..*..**.*... | .........*..**.**.*..... | .............****...*... | .........*..*.....***... |
| ........*..**.*..*..*... | ........***.*.....*..... | ........*.*...*****.*... | ........*.*.***..*.*.... |
| .........*.*..****.**... | ........*...*.....*..*.. | ........*****......*.... | .............*****...... |
| ........***..**.*.**.... | .......*...*..*.*....... | .......*..........*..... | ........********.**.*... |
| ..........**.*..*.**.... | ........*..*..*.*....... | ........*...****.*...... | .........**.....*.**.... |
| ........*.*..*.......... | ........*.***.*.*.**.... | ........**.**.*..**..... | ........*..*..***..*.... |
| .........*.***...**..... | ...............*...*.... | .........**...*.*...*... | .........*..**.*..**.... |
| .........**..*..*....... | ........*..********..... | ........*..*....**...... | .........**.**.*..*..... |
| ............*........... | .........**..*****...... | ............*.****...... | ..........*.*.*......... |
| ..........*****...**.... | ............*..***.*.... | .........**.****.*...... | .............*.......... |
| .........****.*.**...... | ........*......*........ | ........*...*..**....... | .........****........... |
| ...........**...*....... | .........*...*.......... | ........................ | ..........***..***...... |
| ..........***..*..*..... | ..............***....... | .........**..***........ | ............**...*...... |
| .........**.***.*...*... | ........*..*...***.*.... | ........*..**.**........ | .........**.......*..... |
| ...............*.*.*.... | .........******.**.*.... | .........*.*****.*.*.*.. | ..........*.......*.**.. |
| .........*.............. | .........******..*.*.... | .........*******.*...... | .........*.......*...... |
| ..........**...****..... | ..............*....*.... | ..........*...***.*..... | .........**...*....*.... |
| ........*....**..*...... | ........**.....**.**.... | ........**..**...*...... | ........*...*.**.*.*.... |
| .........*.****..***.... | ........*.*.*.**...*.... | ........**.****..*...... | ...........*.*..*..*.... |
| ........**.****...*..... | .......*.....*****.*.... | .......*.....****...*... | ........*****..*..**.... |
| .............*.*.**..... | ........*****.....*..... | ........*.***.***....... | .........*....*...*..... |
| ........*.****.......... | ........*.....****...... | ..............****...... | ........**.***.......... |
| ........*.**..*...**.... | ........**.**.****.*.... | ........**..*..*.*...... | ...........*.**......... |
| .........*..*...**...... | ..........***.**........ | .......**.*....**....... | .........*.****......... |
| ........**.******....... | .......*..*............. | .......***.*............ | .......*.....*****...... |
| ......**..*..**......... | ......*..*..*..**....... | ......**..**.***........ | ......*...*.....**...... |
| ........*.**..**........ | .............*.......... | ......**.*...*..*....... | .......*.***.*.*........ |
| ........*...**.......... | .......*..*............. | .......*....*........... | .......*.****........... |
| .......*.*.**........... | .........*...*.......... | ......***.***........... | .........*.*............ |
| ......*................. | ......****.**........... | ....**.*...*............ | .....****...**.......... |
| ........*..*............ | .....**.**.*............ | ....*.*................. | ....*..*******.......... |
| ....***.**.**........... | .......*.....*.......... | ....**.***.***.*........ | ....*......*..**........ |
| ......***..*.*.......... | .....*....*..*.......... | .......*.***............ | .........*.............. |
| ....*....*....*......... | ....****.*****.......... | ....**...***............ | ....*...*...*........... |
| .....*.................. | ....*.****.*............ | ....**.**............... | .......*..**............ |
| ....****.**............. | ...*......*............. | ...*...**............... | ....***...*............. |
| ........................ | ....*.****.............. | ....**.***.............. | .....**................. |
| ....*..*..**............ | ....**.***.*............ | .......*.*.............. | .....**................. |
| ....***.**.............. | ...*...*................ | ...***.**............... | .......*................ |
| ......*.*............... | ...***.................. | ...*..**................ | ....**.................. |
| .....***................ | ......*.*............... | ....**.*................ | ....*.*................. |
| .....**.*............... | .....*.*................ | ....**..*............... | ......***.*............. |
| ......*****............. | ........................ | ....**...*.............. | ....*..*.*.............. |
| ....oo.o.oo............. | ......o................. | ......o................. | ....oo.o.oo............. |
| ....*..*.*.............. | ....**...*.............. | ........................ | ......*****............. |
| ......***.*............. | ....**..*............... | .....*.*................ | .....**.*............... |
| ....*.*................. | ....**.*................ | ......*.*............... | .....***................ |
| ....**.................. | ...*.***................ | ...**.*................. | .......*................ |
| ....*................... | ...*.................... | ......*................. | .....**.*............... |
| ....*.**................ | ....*................... | ....*.*................. | .....**................. |
| ......**................ | ....*................... | ...*.................... | ....**.................. |
| ....**.................. | ...*..*................. | .....*...***............ | ..........*............. |
| ....***...**............ | .....*..*............... | ....****...*............ | ....*.*...**............ |
| .....**.**.............. | .........**............. | .......*.*.*............ | ....****..*............. |
| ...*.*.**.*.**.......... | ..****.*..**.*.......... | ...**...*..*............ | ....**..*.*............. |
| ..*......*.............. | ..*.*...*.*............. | .....*..****............ | ..***......*............ |
You can see the center half diagonals are both in the same W row, rather than straddling off the end of a row into the start of the next. If we shift a half diagonal, it would look like:

Code: Select all

|                           |                           | ZZZZZZZZZZZZZZZZZZZZZZZZ  |  ZZZZZZZZZZZZZZZZZZZZZZZZ |
|  ZZZZZZZZZZZZZZZZZZZZZZZZ | ZZZZZZZZZZZZZZZZZZZZZZZZ  | ........................  |  ........................ |
|  ........................ | ........................  | ........................  |  ........................ |
|  ........................ | ........................  | ........................  |  ........................ |
|  ........................ | ...............*.*......  | ...............**.......  |  ............*........... |
|  ............*****....... | ................*.......  | ............**.***......  |  ..............*.*....... |
|  ...........*....**...... | ............****........  | ..........**..***.*.....  |  ..........***........... |
|  .............*...***.... | ...........*...****.*...  | ..........*.*.*..**.....  |  .........*.***.*........ |
|  .........**.***.**...... | ...........**...........  | ............*..*.*......  |  .........*****.**....... |
|  .........*...**.*....... | ..........*.*...........  | ..........*...*.........  |  ..........**.*.*........ |
|  ...........*....*....... | ..........*.**.**.......  | .........**.*.***.......  |  .........*..*........... |
|  .........*.....**....... | .........*..**.*........  | ..........*.****........  |  ........................ |
|  ...........**..*........ | ............*.*.........  | ..........*..*..*.......  |  ..........*.....*....... |
|  ............**.......... | ............*...........  | ..........***...*.......  |  .........*.....*........ |
|  .........*.***..**...... | ..........**.*..*.*.....  | ............*****.......  |  ............*..*........ |
|  ..........**............ | ..........*..*..........  | ...........**...*.......  |  .............**.*....... |
|  ..........*...*......... | ............**.*........  | ...........*....*.......  |  ..........***.*......... |
|  ............*.*.*....... | .............*.**.......  | ............*...**......  |  ............***.*.*..... |
|  ..........*.**.***...... | ...........*.....*......  | .............*..**......  |  ..........***.**........ |
|  ..........*.**.*........ | ...........*...*.**.....  | .............***.**.....  |  ...........*......*..... |
|  ..........**...*........ | ............***..***....  | ..........**....***..*..  |  .........*..*.**..**.... |
|  .........*..**.*...*.... | ..........*****.**.***..  | ..........*.*....*..*...  |  ..........****...*.**... |
|  ...........*.**.....*... | ..........****..****.*..  | .........*.*.*.*.**.....  |  .........*.***.....**... |
|  .........**...**.**..... | .........*..***.**..**..  | ..........*.***..*......  |  .........*.....*........ |
|  .........**.*...*****... | ...............*........  | .........*******.*..*...  |  ........*...**.**.**.... |
|  ........*..***..*..**... | .........***...*..*.....  | .........*.*..*..**.*...  |  .........*..**.**.*..... |
|  .............****...*... | .........*..*.....***...  | ........*..**.*..*..*...  |  ........***.*.....*..... |
|  ........*.*...*****.*... | ........*.*.***..*.*....  | .........*.*..****.**...  |  ........*...*.....*..*.. |
|  ........*****......*.... | .............*****......  | ........***..**.*.**....  |  .......*...*..*.*....... |
|  .......*..........*..... | ........********.**.*...  | ..........**.*..*.**....  |  ........*..*..*.*....... |
|  ........*...****.*...... | .........**.....*.**....  | ........*.*..*..........  |  ........*.***.*.*.**.... |
|  ........**.**.*..**..... | ........*..*..***..*....  | .........*.***...**.....  |  ...............*...*.... |
|  .........**...*.*...*... | .........*..**.*..**....  | .........**..*..*.......  |  ........*..********..... |
|  ........*..*....**...... | .........**.**.*..*.....  | ............*...........  |  .........**..*****...... |
|  ............*.****...... | ..........*.*.*.........  | ..........*****...**....  |  ............*..***.*.... |
|  .........**.****.*...... | .............*..........  | .........****.*.**......  |  ........*......*........ |
|  ........*...*..**....... | .........****...........  | ...........**...*.......  |  .........*...*.......... |
|  ........................ | ..........***..***......  | ..........***..*..*.....  |  ..............***....... |
|  .........**..***........ | ............**...*......  | .........**.***.*...*...  |  ........*..*...***.*.... |
|  ........*..**.**........ | .........**.......*.....  | ...............*.*.*....  |  .........******.**.*.... |
|  .........*.*****.*.*.*.. | ..........*.......*.**..  | .........*..............  |  .........******..*.*.... |
|  .........*******.*...... | .........*.......*......  | ..........**...****.....  |  ..............*....*.... |
|  ..........*...***.*..... | .........**...*....*....  | ........*....**..*......  |  ........**.....**.**.... |
|  ........**..**...*...... | ........*...*.**.*.*....  | .........*.****..***....  |  ........*.*.*.**...*.... |
|  ........**.****..*...... | ...........*.*..*..*....  | ........**.****...*.....  |  .......*.....*****.*.... |
|  .......*.....****...*... | ........*****..*..**....  | .............*.*.**.....  |  ........*****.....*..... |
|  ........*.***.***....... | .........*....*...*.....  | ........*.****..........  |  ........*.....****...... |
|  ..............****...... | ........**.***..........  | ........*.**..*...**....  |  ........**.**.****.*.... |
|  ........**..*..*.*...... | ...........*.**.........  | .........*..*...**......  |  ..........***.**........ |
|  .......**.*....**....... | .........*.****.........  | ........**.******.......  |  .......*..*............. |
|  .......***.*............ | .......*.....*****......  | ......**..*..**.........  |  ......*..*..*..**....... |
|  ......**..**.***........ | ......*...*.....**......  | ........*.**..**........  |  .............*.......... |
|  ......**.*...*..*....... | .......*.***.*.*........  | ........*...**..........  |  .......*..*............. |
|  .......*....*........... | .......*.****...........  | .......*.*.**...........  |  .........*...*.......... |
|  ......***.***........... | .........*.*............  | ......*.................  |  ......****.**........... |
|  ....**.*...*............ | .....****...**..........  | ........*..*............  |  .....**.**.*............ |
|  ....*.*................. | ....*..*******..........  | ....***.**.**...........  |  .......*.....*.......... |
|  ....**.***.***.*........ | ....*......*..**........  | ......***..*.*..........  |  .....*....*..*.......... |
|  .......*.***............ | .........*..............  | ....*....*....*.........  |  ....****.*****.......... |
|  ....**...***............ | ....*...*...*...........  | .....*..................  |  ....*.****.*............ |
|  ....**.**............... | .......*..**............  | ....****.**.............  |  ...*......*............. |
|  ...*...**............... | ....***...*.............  | ........................  |  ....*.****.............. |
|  ....**.***.............. | .....**.................  | ....*..*..**............  |  ....**.***.*............ |
|  .......*.*.............. | .....**.................  | ....***.**..............  |  ...*...*................ |
|  ...***.**............... | .......*................  | ......*.*...............  |  ...***.................. |
|  ...*..**................ | ....**..................  | .....***................  |  ......*.*............... |
|  ....**.*................ | ....*.*.................  | .....**.*...............  |  .....*.*................ |
|  ....**..*............... | ......***.*.............  | ......*****.............  |  ........................ |
|  ....**...*.............. | ....*..*.*..............  | ....oo.o.oo.............  |  ......o................. |
|  ......o................. | ....oo.o.oo.............  | ....*..*.*..............  |  ....**...*.............. |
|  ........................ | ......*****.............  | ......***.*.............  |  ....**..*............... |
|  .....*.*................ | .....**.*...............  | ....*.*.................  |  ....**.*................ |
|  ......*.*............... | .....***................  | ....**..................  |  ...*.***................ |
|  ...**.*................. | .......*................  | ....*...................  |  ...*.................... |
|  ......*................. | .....**.*...............  | ....*.**................  |  ....*................... |
|  ....*.*................. | .....**.................  | ......**................  |  ....*................... |
|  ...*.................... | ....**..................  | ....**..................  |  ...*..*................. |
|  .....*...***............ | ..........*.............  | ....***...**............  |  .....*..*............... |
|  ....****...*............ | ....*.*...**............  | .....**.**..............  |  .........**............. |
|  .......*.*.*............ | ....****..*.............  | ...*.*.**.*.**..........  |  ..****.*..**.*.......... |
|  ...**...*..*............ | ....**..*.*.............  | ..*......*..............  |  ..*.*...*.*............. |
|  .....*..****............ | ..***......*............  |                           |                           |
Here you can see those key two center half diagonals being the bottom half of one W row and the top half of the next.

If you strip these back and try to continue them looking for GSE ends the former doesn't find it (blowing right past it), while the latter does:

Code: Select all

$ cat r1a.in
|     L            |    LL            |
|    .LL           |   ..LL           |
|   ...LL          |  ....LL          |
|   ....Lu         |   ....uu         |
|    ....uu        |    ...*uu        |
|     ..*.uu       |     ..**uu       |
|      ....uu      |      *.**uu      |
|       **.*uu     |       ....uu     |
|        ***.uu    |        **..uu    |
|         .***uR   |         ....RR   |
|          *...RR  |          .*..RR  |
|           ....RR |           ....RR |
|            ....R |            ....  |
|             ...  |             ..   |
|              .   |                  |
$ ./rlife grid-tool to-uwi c2d-s2s < r1a.in
| LLLuuuuuuRRR | LLLuuuuuuRRR | LLLuuuuuuRRR | LLLuuuuuuRRR |
| ......*.*... | ...***...... | ...*..**.... | ....**...... |
| .....***.... | ......*.*... | ....**.*.... | ....*.*..... |
$ ./rlife.990f8a857c6f llsss-recentering --rule 'B2458/S1267' c2d-s2s r1a.in --llsss-env LLSSS_HALT_ON_ENDS=true --ends gse --halts w_pos:17 10
...
20250810 10:14:02 [INFO] Shortest partial:
20250810 10:14:02 [INFO] |                   L            |                  LL            |
20250810 10:14:02 [INFO] |                  .LL           |                 ..LL           |
20250810 10:14:02 [INFO] |                 ...Lu          |                ....uu          |
20250810 10:14:02 [INFO] |                .....uu         |               .....*uu         |
20250810 10:14:02 [INFO] |               .....*.uu        |              ......**uu        |
20250810 10:14:02 [INFO] |              .........uu       |             ......*.**uu       |
20250810 10:14:02 [INFO] |             .......**.*uu      |            ............uu      |
20250810 10:14:02 [INFO] |            .......*****.uu     |           ......*..***..uu     |
20250810 10:14:02 [INFO] |           ......**.**.***uR    |          ......*...*.....RR    |
20250810 10:14:02 [INFO] |          ......*.***..*...RR   |         .......**...**.*..RR   |
20250810 10:14:02 [INFO] |         ............*.*....RR  |        .......*.*.**.*.....RR  |
20250810 10:14:02 [INFO] |        ......*....**.**.....RR |       .....*.****.*.........RR |
20250810 10:14:02 [INFO] |       .....**..**.*...*......R |      .....*..***.*...*.*.....  |
20250810 10:14:02 [INFO] |      ......***.*.*...***.....  |     .........**...*.*.......   |
20250810 10:14:02 [INFO] |     ......*....*.**.*.*.....   |    .......**..********.....    |
20250810 10:14:02 [INFO] |    .....*.*...*............    |   .....****.*.**....*.....     |
20250810 10:14:02 [INFO] |   ......*...**...*..*.....     |  ........**..............      |
20250810 10:14:02 [INFO] |  .......**..**...........      |  .....**..**..*.........       |
20250810 10:14:02 [INFO] |  .....****...**.........       |   ....*.....*..........        |
20250810 10:14:02 [INFO] |   ......*.*.**.........        |    ...*...*.*.........         |
20250810 10:14:02 [INFO] |    ..**.*.*...........         |     .********........          |
20250810 10:14:02 [INFO] |     ..*....**........          |      ..*.****.......           |
20250810 10:14:02 [INFO] |      **.............           |       .*.....*.....            |
20250810 10:14:02 [INFO] |       ...*.*..*....            |        *.*........             |
20250810 10:14:02 [INFO] |        .**........             |         .........              |
20250810 10:14:02 [INFO] |         *........              |          .......               |
20250810 10:14:02 [INFO] |          .......               |           .....                |
20250810 10:14:02 [INFO] |           .....                |            ...                 |
20250810 10:14:02 [INFO] |            ...                 |             .                  |
20250810 10:14:02 [INFO] |             .                  |                                |
...
20250810 10:14:02 [WARNING] Halt requested (w_pos 17 >= 17), stopping...
...
$ cat r1b.in
|     L            |    LL            |
|    .LL           |   ..LL           |
|   ...LL          |  ....LL          |
|   ....Lu         |   ....uu         |
|    ...*uu        |    ..*.uu        |
|     .*.*uu       |     .**.uu       |
|      ...*uu      |      .**.uu      |
|       *.*.uu     |       ...*uu     |
|        **.*uu    |        *...uu    |
|         ****uR   |         ....RR   |
|          ....RR  |          *...RR  |
|           ....RR |           ....RR |
|            ....R |            ....  |
|             ...  |             ..   |
|              .   |                  |
$ ./rlife grid-tool to-uwi c2d-s2s < r1b.in
| LLLuuuuuuRRR | LLLuuuuuuRRR | LLLuuuuuuRRR | LLLuuuuuuRRR |
| ...***.**... | ......*..... | .....*.*.... | ...***...... |
| ...*..**.... | ...**....... | ....***..... | ......*.*... |
$ ./rlife.990f8a857c6f llsss-recentering --rule 'B2458/S1267' c2d-s2s r1b.in --llsss-env LLSSS_HALT_ON_ENDS=true --ends gse 10
...
20250810 10:16:39 [INFO] End [thinnest] "LlsssEndsReflect(GSEven)":
20250810 10:16:39 [INFO] |       L           |      LL           |
20250810 10:16:39 [INFO] |      .LL          |     ..LL          |
20250810 10:16:39 [INFO] |     ...Lu         |    ....uu         |
20250810 10:16:39 [INFO] |    ....*uu        |   ....*.uu        |
20250810 10:16:39 [INFO] |   ....*.*uu       |  .....**.uu       |
20250810 10:16:39 [INFO] |  ........*uu      | .....*.**.uu      |
20250810 10:16:39 [INFO] |  .....**.*.uu     |  .........*uu     |
20250810 10:16:39 [INFO] |   ...*****.*uu    |   .*..***...uu    |
20250810 10:16:39 [INFO] |    **.**.****uR   |    ...*......RR   |
20250810 10:16:39 [INFO] |     ***..*....RR  |     ...**.*...RR  |
20250810 10:16:39 [INFO] |      ..*.*.....RR |      **.*......RR |
20250810 10:16:39 [INFO] |       *.**......R |       ..........  |
20250810 10:16:39 [INFO] |        ..*......  |        .*.*....   |
20250810 10:16:39 [INFO] |         ***....   |         ......    |
20250810 10:16:39 [INFO] |          *....    |          ....     |
20250810 10:16:39 [INFO] |           ...     |           ..      |
20250810 10:16:39 [INFO] |            .      |                   |
...
A similar sort of problem happens searching "raw:1:0:0:-2:0:4:0:2:0" (2c4-s2s/W=2Y), where if you include tile error mask max, the MWSS will not be found (as GSO) due to misalignment, even though it is in the search state and is found (via agar ends) as the entire ship:

Code: Select all

$ ./rlife.990f8a857c6f llsss-recentering-wao 'raw:1:0:0:-2:0:4:0:2:0' --wao-tile-error-mask MAX '@bg' --ends bg,gso 07
...
20250810 10:19:36 [INFO] End [thinnest] "LlsssEndsReflect(GSOdd)":
20250810 10:19:36 [INFO] |  ZZZZZZZZZ |  ZZZZZZZZZ | ZZZZZZZZZ  | ZZZZZZZZZ  |
20250810 10:19:36 [INFO] |  ZZZZZZZZZ |  ZZZZZZZZZ | ZZZZZZZZZ  | ZZZZZZZZZ  |
20250810 10:19:36 [INFO] |  ......... |  ......... | .........  | .........  |
20250810 10:19:36 [INFO] |  ......... |  ......... | .........  | .........  |
20250810 10:19:36 [INFO] |  ......... |  ......... | .........  | .........  |
20250810 10:19:36 [INFO] |  ......... |  ......... | ....**...  | ...*..*..  |
20250810 10:19:36 [INFO] |  ...**.... |  ..****... | ...****..  | ..*......  |
20250810 10:19:36 [INFO] |  ..**.**.. |  ..*...*.. | ..**.**..  | ..*...*..  |
...
20250810 10:19:37 [INFO] End [thinnest] ("LlsssEndsAgar", "zero"):
20250810 10:19:37 [INFO] |  ZZZZZZZZZ |  ZZZZZZZZZ | ZZZZZZZZZ  | ZZZZZZZZZ  |
20250810 10:19:37 [INFO] |  ZZZZZZZZZ |  ZZZZZZZZZ | ZZZZZZZZZ  | ZZZZZZZZZ  |
20250810 10:19:37 [INFO] |  ......... |  ......... | .........  | .........  |
20250810 10:19:37 [INFO] |  ......... |  ......... | .........  | .........  |
20250810 10:19:37 [INFO] |  ......... |  ......... | .........  | .........  |
20250810 10:19:37 [INFO] |  ......... |  ......... | ....**...  | ...*..*..  |
20250810 10:19:37 [INFO] |  ...**.... |  ..****... | ...****..  | ..*......  |
20250810 10:19:37 [INFO] |  ..**.**.. |  ..*...*.. | ..**.**..  | ..*...*..  |
20250810 10:19:37 [INFO] |  ...****.. |  ..*...... | ...**....  | ..****...  |
20250810 10:19:37 [INFO] |  ....**... |  ...*..*.. | .........  | .........  |
20250810 10:19:37 [INFO] |  ......... |  ......... | .........  | .........  |
20250810 10:19:37 [INFO] |  ......... |  ......... | .........  | .........  |
...
20250810 10:19:37 [INFO] End [thinnest] ("LlsssEndsAgar", "zero"):
20250810 10:19:37 [INFO] |  ZZZZZZZZZZ |  ZZZZZZZZZZ | ZZZZZZZZZZ  | ZZZZZZZZZZ  |
20250810 10:19:37 [INFO] |  ZZZZZZZZZZ |  ZZZZZZZZZZ | ZZZZZZZZZZ  | ZZZZZZZZZZ  |
20250810 10:19:37 [INFO] |  .......... |  .......... | ..........  | ..........  |
20250810 10:19:37 [INFO] |  .......... |  .......... | ..........  | ..........  |
20250810 10:19:37 [INFO] |  .......... |  .......... | ..........  | ..........  |
20250810 10:19:37 [INFO] |  .......... |  .......... | ..........  | .....*....  |
20250810 10:19:37 [INFO] |  .......... |  .......... | ....***...  | ...*...*..  |
20250810 10:19:37 [INFO] |  ...**..... |  ..*****... | ...*****..  | ..*.......  |
20250810 10:19:37 [INFO] |  ..**.***.. |  ..*....*.. | ..**.***..  | ..*....*..  |
20250810 10:19:37 [INFO] |  ...*****.. |  ..*....... | ...**.....  | ..*****...  |
20250810 10:19:37 [INFO] |  ....***... |  ...*...*.. | ..........  | ..........  |
20250810 10:19:37 [INFO] |  .......... |  .....*.... | ..........  | ..........  |
20250810 10:19:37 [INFO] |  .......... |  .......... | ..........  | ..........  |
20250810 10:19:37 [INFO] |  .......... |  .......... | ..........  | ..........  |
...
We of course would probably never use such a silly geometry, but I think it is easier to understand than trying to read diagonal rows.

I think this is all fairly strong evidence that my original hypothesis is correct. Assuming I'm right this is great news in that nothing is wrong with the core engine (e.g. I don't have to worry about any previous negative results being invalidated). It is of course a defect in that it's surprising and short of what it could be. I sort of dropped the ball when implementing the reflect ends by not realizing there could be multiple W phasings/alignments of the axis of reflection. I was coming from/generalizing the previous orthogonal s2s-only code where there is no such thing and it just never occurred to me. These diagonal f2b/b2f/s2s geometries are just cursed.

I've sketched a fix for this and rerunning some of the above with it (167bf576ccbd) produces arguably better results:

Code: Select all

$ ./rlife.167bf576ccbd llsss-recentering --rule 'B2458/S1267' c2d-s2s r1a.in --llsss-env LLSSS_HALT_ON_ENDS=true --ends gse --halts w_pos:17 10
...
20250810 10:24:17 [INFO] End [thinnest] "LlsssEndsReflect(GSEven), W shift #1":
20250810 10:24:17 [INFO] |       L            |      LL            |
20250810 10:24:17 [INFO] |      .LL           |     ..LL           |
20250810 10:24:17 [INFO] |     ...Lu          |    ....uu          |
20250810 10:24:17 [INFO] |    .....uu         |   .....*uu         |
20250810 10:24:17 [INFO] |   .....*.uu        |  ......**uu        |
20250810 10:24:17 [INFO] |  .........uu       | ......*.**uu       |
20250810 10:24:17 [INFO] |  ......**.*uu      |  ..........uu      |
20250810 10:24:17 [INFO] |   ....*****.uu     |   ..*..***..uu     |
20250810 10:24:17 [INFO] |    .**.**.***uR    |    *...*.....RR    |
20250810 10:24:17 [INFO] |     .***..*...RR   |     *...**.*..RR   |
20250810 10:24:17 [INFO] |      ...*.*....RR  |      .**.*.....RR  |
20250810 10:24:17 [INFO] |       **.**.....RR |       *.........RR |
20250810 10:24:17 [INFO] |        ...*......R |        ..*.*.....  |
20250810 10:24:17 [INFO] |         .***.....  |         *.......   |
20250810 10:24:17 [INFO] |          .*.....   |          *.....    |
20250810 10:24:17 [INFO] |           .....    |           ....     |
20250810 10:24:17 [INFO] |            ...     |            ..      |
20250810 10:24:17 [INFO] |             .      |                    |
...

Code: Select all

$ ./rlife.167bf576ccbd llsss-recentering-wao 'raw:1:0:0:-2:0:4:0:2:0' --wao-tile-error-mask MAX '@bg' --ends bg,gso 07
...
20250810 10:24:43 [INFO] End [thinnest] "LlsssEndsReflect(GSOdd), W shift #0":
20250810 10:24:43 [INFO] |  ZZZZZZZZZ |  ZZZZZZZZZ | ZZZZZZZZZ  | ZZZZZZZZZ  |
20250810 10:24:43 [INFO] |  ZZZZZZZZZ |  ZZZZZZZZZ | ZZZZZZZZZ  | ZZZZZZZZZ  |
20250810 10:24:43 [INFO] |  ......... |  ......... | .........  | .........  |
20250810 10:24:43 [INFO] |  ......... |  ......... | .........  | .........  |
20250810 10:24:43 [INFO] |  ......... |  ......... | .........  | .........  |
20250810 10:24:43 [INFO] |  ......... |  ......... | ....**...  | ...*..*..  |
20250810 10:24:43 [INFO] |  ...**.... |  ..****... | ...****..  | ..*......  |
20250810 10:24:43 [INFO] |  ..**.**.. |  ..*...*.. | ..**.**..  | ..*...*..  |
...
20250810 10:24:45 [INFO] End [thinnest] "LlsssEndsReflect(GSOdd), W shift #1":
20250810 10:24:45 [INFO] |  ZZZZZZZZZZ |  ZZZZZZZZZZ | ZZZZZZZZZZ  | ZZZZZZZZZZ  |
20250810 10:24:45 [INFO] |  ZZZZZZZZZZ |  ZZZZZZZZZZ | ZZZZZZZZZZ  | ZZZZZZZZZZ  |
20250810 10:24:45 [INFO] |  .......... |  .......... | ..........  | ..........  |
20250810 10:24:45 [INFO] |  .......... |  .......... | ..........  | ..........  |
20250810 10:24:45 [INFO] |  .......... |  .......... | ..........  | ..........  |
20250810 10:24:45 [INFO] |  .......... |  .......... | ..........  | .....*....  |
20250810 10:24:45 [INFO] |  .......... |  .......... | ....***...  | ...*...*..  |
20250810 10:24:45 [INFO] |  ...**..... |  ..*****... | ...*****..  | ..*.......  |
20250810 10:24:45 [INFO] |  ..**.***.. |  ..*....*.. | ..**.***..  | ..*....*..  |
20250810 10:24:45 [INFO] |  ...*****.. |  ..*....... | ...**.....  | ..*****...  |
...
You can see the results all reported with "W shift #0" or "W shift #1" and in particular all the missing stuff above is tagged #1 (the implied "W shift #0" will be omitted in simpler geometries where there is only one).

It is probably worth mentioning somewhere in here that instead of c2d-s2s you might prefer "raw:1:1:0:-1:-1:2:-1:0:1". It's like c2d-s2s but it takes advantage of the evenness of 2 to cut W in half (mod V). It therefore doesn't exactly change the search order, but there are a few benefits. Certains ends and partial will run twice as often (every half-diagonal instead of every diagonal), but the real benefit is WAO working better. As-is (c2d-s2s) you'd need to use tile error mask if you wanted to avoid duplicate starts (patterns that are zero in their first half diagaonal), but with the raw half-diagonal geometry you wouldn't and I'd expect a 200MB autochoke search to therefore do a little better on average. As an example, here is a random partial from (my run of) the original search whose analog would be excluded (either by WAO tile error mask or by using the raw half-diagonal geometry):

Code: Select all

20250810 09:00:48 [INFO] Random[ish] partial:
20250810 09:00:48 [INFO] |                       |                       |
20250810 09:00:48 [INFO] |        Z              |       ZZ              |
20250810 09:00:48 [INFO] |       .ZZ             |      ..ZZ             |
20250810 09:00:48 [INFO] |      ...ZZ            |     ....ZZ            |
20250810 09:00:48 [INFO] |     .....ZZ           |    ......ZZ           |
20250810 09:00:48 [INFO] |    .......ZZ S        |   ........ZZSS        |
20250810 09:00:48 [INFO] |   .........ZZSS       |  ..........ZZSS       |
20250810 09:00:48 [INFO] |  ...........ZZS       |  ...........ZZ        |
20250810 09:00:48 [INFO] |  ............ZZ       |   .*..*......ZZ       |
20250810 09:00:48 [INFO] |   .****.......ZZ      |    *****......ZZ      |
20250810 09:00:48 [INFO] |    ....*.......ZZ     |     .****......ZZ     |
20250810 09:00:48 [INFO] |     **.*........ZZ    |      *.*........ZZ    |
20250810 09:00:48 [INFO] |      ....*.......ZZ   |       *.**.......ZZ   |
20250810 09:00:48 [INFO] |       **.**.......ZZ  |        ...........ZZ  |
20250810 09:00:48 [INFO] |        ***...*.....Z  |         ..***......   |
20250810 09:00:48 [INFO] |         ...*.......   |          ..***....    |
20250810 09:00:48 [INFO] |          ..**.....    |           *.*....     |
20250810 09:00:48 [INFO] |           *......     |            *....      |
20250810 09:00:48 [INFO] |            *....      |             ...       |
20250810 09:00:48 [INFO] |             ...       |              .        |
20250810 09:00:48 [INFO] |              .        |                       |
I've rerun the original search from zero with the new code (167bf576ccbd, just pushed to codeberg) and verified it does catch the alternately-aligned (as in "W shift #1") GSE result. Verifying for sure that the alternate alignment of that start was dropped by autochoke is not so easy and I will probably not bother trying to prove it before considering this resolved.
Last edited by amling on August 10th, 2025, 4:06 pm, edited 1 time in total.

amling
Posts: 1154
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling » August 10th, 2025, 3:17 pm

amling wrote:
August 3rd, 2025, 11:06 pm
Sylvani wrote:
August 2nd, 2025, 6:54 pm
I tried following these steps to find an agarship in Seeds, to no avail...
I will try to remember to come back to this when I'm back at a real computer and make a very explicit demo of the difference between repeatable and not...
As a demo of this repeating edge business I was talking about, consider p1 photons in the rule B23a/S2k3q4a, constructed specifically to have these two similar photons and not much else small:

Code: Select all

x = 4, y = 15, rule = B23a/S2k3q4a
3bo$bo$bo$3bo6$3bo$bo$2o$2o$bo$3bo!
Now imagine we're trying to extend at c1-s2s (west) this partial:

Code: Select all

| ....... |
| ....... |
| ....*.. |
| ..*.... |
If we set that up with two L's and two R's:

Code: Select all

$ cat 0.in
| LL123RR |
| ....... |
| ....... |
| ....*.. |
| ..*.... |
It finds one photon but not the other:

Code: Select all

$ ./rlife llsss-recentering --rule 'B23a/S2k3q4a' c1-s2s 0.in 05
...
20250810 12:08:46 [INFO] End [thinnest] ("LlsssEndsAgar", "zero"):
20250810 12:08:46 [INFO] | LL123RR |
20250810 12:08:46 [INFO] | ....... |
20250810 12:08:46 [INFO] | ....... |
20250810 12:08:46 [INFO] | ....*.. |
20250810 12:08:46 [INFO] | ..*.... |
20250810 12:08:46 [INFO] | ..*.... |
20250810 12:08:46 [INFO] | ....*.. |
20250810 12:08:46 [INFO] | ....... |
20250810 12:08:46 [INFO] | ....... |
...
20250810 12:08:46 [INFO] End [thinnest] ("LlsssEndsAgar", "zero"):
20250810 12:08:46 [INFO] | LL123RR |
20250810 12:08:46 [INFO] | ....... |
20250810 12:08:46 [INFO] | ....... |
20250810 12:08:46 [INFO] | ....*.. |
20250810 12:08:46 [INFO] | ..*.... |
20250810 12:08:46 [INFO] | ..*.... |
20250810 12:08:46 [INFO] | ....*.. |
20250810 12:08:46 [INFO] | ....... |
20250810 12:08:46 [INFO] | ....... |
20250810 12:08:46 [INFO] | ....*.. |
20250810 12:08:46 [INFO] | ..*.... |
20250810 12:08:46 [INFO] | ..*.... |
20250810 12:08:46 [INFO] | ....*.. |
20250810 12:08:46 [INFO] | ....... |
20250810 12:08:46 [INFO] | ....... |
...
If you look at all the partials you might note that every single one of them has roots LL123RR which is in fact the only valid recombination of the 3-grams of the input's LL123RR.

Contrast searching with 3 blanks on each side:

Code: Select all

$ cat 1.in
| LLL123RRR |
| ......... |
| ......... |
| .....*... |
| ...*..... |
Now the 3-grams are LLL, LL1, L12, 123, 23R, 3RR, and RRR. The legal combinations of these are (L*)LL123RR(R*) which allows it to unroll the zeros on either side as many times as it wants and thus find the bigger photon:

Code: Select all

$ ./rlife llsss-recentering --rule 'B23a/S2k3q4a' c1-s2s 1.in 05
...
20250810 12:08:50 [INFO] End [thinnest] ("LlsssEndsAgar", "zero"):
20250810 12:08:50 [INFO] | LL123RR |
20250810 12:08:50 [INFO] | ....... |
20250810 12:08:50 [INFO] | ....... |
20250810 12:08:50 [INFO] | ....*.. |
20250810 12:08:50 [INFO] | ..*.... |
20250810 12:08:50 [INFO] | ..*.... |
20250810 12:08:50 [INFO] | ....*.. |
20250810 12:08:50 [INFO] | ....... |
20250810 12:08:50 [INFO] | ....... |
...
20250810 12:08:50 [INFO] End [thinnest] ("LlsssEndsAgar", "zero"):
20250810 12:08:50 [INFO] | LLL123RR |
20250810 12:08:50 [INFO] | ........ |
20250810 12:08:50 [INFO] | ........ |
20250810 12:08:50 [INFO] | .....*.. |
20250810 12:08:50 [INFO] | ...*.... |
20250810 12:08:50 [INFO] | ..**.... |
20250810 12:08:50 [INFO] | ..**.... |
20250810 12:08:50 [INFO] | ...*.... |
20250810 12:08:50 [INFO] | .....*.. |
20250810 12:08:50 [INFO] | ........ |
20250810 12:08:50 [INFO] | ........ |
...
You might even see partials that have duplicated the LLL or RRR 3-grams many times:

Code: Select all

20250810 12:08:50 [INFO] Random[ish] partial:
20250810 12:08:50 [INFO] |    SS      |
20250810 12:08:50 [INFO] | LLLLL123RR |
20250810 12:08:50 [INFO] | .......... |
20250810 12:08:50 [INFO] | .......... |
20250810 12:08:50 [INFO] | .......*.. |
20250810 12:08:50 [INFO] | .....*.... |
20250810 12:08:50 [INFO] | .....*.... |
20250810 12:08:50 [INFO] | .......*.. |
20250810 12:08:50 [INFO] | .......... |
20250810 12:08:50 [INFO] | ...*...... |
20250810 12:08:50 [INFO] | ..*....... |

Code: Select all

20250810 12:08:50 [INFO] Random[ish] partial:
20250810 12:08:50 [INFO] |      SS   |
20250810 12:08:50 [INFO] | LL123RRRR |
20250810 12:08:50 [INFO] | ......... |
20250810 12:08:50 [INFO] | ......... |
20250810 12:08:50 [INFO] | ....*.... |
20250810 12:08:50 [INFO] | ..*...... |
20250810 12:08:50 [INFO] | ..*...... |
20250810 12:08:50 [INFO] | ....*.... |
20250810 12:08:50 [INFO] | ......... |
20250810 12:08:50 [INFO] | ......... |
20250810 12:08:50 [INFO] | ......... |
20250810 12:08:50 [INFO] | ......... |
20250810 12:08:50 [INFO] | ......... |
20250810 12:08:50 [INFO] | ......*.. |
20250810 12:08:50 [INFO] | ....*.... |
20250810 12:08:50 [INFO] | ...**.... |
20250810 12:08:50 [INFO] | ...**.... |
I've used "123" for the unique middle root labels here for clarity, but "uuu" works the same (i.e. "LLLuuuRRR"), namely that each "u" is considered unique and saves you from running out of unique root label characters for wide partials.

User avatar
Sylvani
Posts: 146
Joined: September 26th, 2024, 3:23 am

Re: amling search program principles discussion / brain dump

Post by Sylvani » August 23rd, 2025, 8:30 pm

Why was LLSSS_INIT_CA_CHECKS removed? I am trying to run a simple search for a (2,1)c/3 ship in B25/S24. It's saying this error:

Code: Select all

thread 'main' panicked at src/llsss/init.rs:33:9:
Initialization grid too tall for CA checks: w_size (23) * geom.udet (3) > TB::VB::SIZE (64).
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
When adding LLSSS_INIT_CA_CHECKS into the beginning of the command, I get this:

Code: Select all

thread 'main' panicked at src/llsss/env.rs:55:17:
No readers for apparent LLSSS configuration "LLSSS_INIT_CA_CHECKS" = "false"
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Here is the input file:

Code: Select all

|                              |                              | LLuuuuuuuuuuuuuuuuuuuuuuuuRR |
| LLuuuuuuuuuuuuuuuuuuuuuuuuRR | LLuuuuuuuuuuuuuuuuuuuuuuuuRR | ............................ |
| ............................ | ............................ | ............................ |
| ............................ | ............................ | ...*...*.................... |
| ............................ | ...*****.................... | ..*.**..****................ |
| ...**.**....*............... | ...**.*.*.**................ | ..*.**.**................... |
| ..****...*.*................ | ........*.**.*.............. | ..*...*..................... |
| ...**.*.....*............... | ...*.*...................... | ..*****.*................... |
| .....*.**.*................. | ...***...*.*................ | ....*..*.................... |
| ..***.*..................... | ..*...**.*.................. | ......***.*................. |
| ...*..**.................... | ......***.***............... | ......*.**.*................ |
| .........*.**............... | .....*..*.*.**.............. | .......*.***...*............ |
| ......*......*.............. | ........*.....**............ | .......*..*.**.*****........ |
| .........**.*.*.*...*....... | ...........***..*.**........ | .......******....*.**....... |
| .............**.**.*........ | ........*..*.*......*....... | .......*....*..*...***...... |
| .........*...*...*.......... | ........*.*...*...*.*....... | .......*..*......*.**....... |
| .........*..***...**........ | ..........*.*.**..*.*....... | ..........**..***.***....... |
| .......*.***.**...**........ | ..........*.*....*..*....... | ...........*..*..*.***...... |
| ..........*..***............ | ........*...****..**........ | ..........**.***..***....... |
| ..........***............... | ..........*.*...*........... | ........*....*..****........ |
| ..........***..*..*......... | .........*..*..*............ | .........*..**.**.*......... |
| .............**.**.......... | ..........********.*........ | ..........*.**...*.......... |
| .........***.**.**.*........ | ..........**..**.*.......... | ..........**.*..*.*.*....... |
| ............*.*...*......... | .........*....*...**........ | .........**.***.....*....... |
| ...........*....*.....*..... | ..........**.....***........ | ..........*.*...**....*..... |
| ...........*.***...*........ | ..........**.....**.***..... |                              |
Here's the command I am running:

Code: Select all

LLSSS_MAX_TABLE_SIZE=23 LLSSS_INIT_CA_CHECKS=false ./rlife llsss-recentering-wao c3k-1 0.in 30 --rule 'B25/S24' --pre-reify-autochoke 4294967296 | tee log.txt

amling
Posts: 1154
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling » August 24th, 2025, 12:06 am

Sylvani wrote:
August 23rd, 2025, 8:30 pm
Why was LLSSS_INIT_CA_CHECKS removed?
I changed normal fixed and recentering modes to do CA checks iff there are any wildcards in the init grids. My reasoning was that searches are generally going to either have no wildcards and need no checks (like why would you provide a hard-coded grid, part of which does not meet CA checks?), or have wildcards and really need checks.

Your inputs and arguments do not make sense to me, although I do reproduce the crash with them. When I made the changes to remove LLSSS_INIT_CA_CHECKS I left recentering WAO mode still running them since it did not make sense to me that anyone would run WAO mode with a super-long init grid. Thinking about it more it's probably the case that they can be removed (there are no wildcards in WAO, at least not like this). However, I don't think this is the "right" "fix" for your "problem". You almost certainly intend to run normal (non-WAO) recentering mode if you're trying to extend a partial.

Additionally, and I have commented on this several times now on this thread, but providing a partial to recentering whose roots are "LLuuu...uuuRR" (just 2 L's and 2 R's) is equivalent to just all u's and is more like a fixed board search.

EDIT 2025/08/24: I have just pushed changes to finally make the CA checks work at any depth and just always run. Hopefully this can be the last word on this long, sad init CA checks saga and we can all just forget it exists. With these changes the original search here runs, but it of course does something (WAO mode) which I doubt is desired.

amling
Posts: 1154
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling » August 26th, 2025, 2:27 pm

I was thinking some more about the Day & Night checkerboard crawlers and especially how the checkerboard dual trick allowed searching for e.g. "c/2" signals. Really, I would view these as 2c/4 with a special cell-toggling symmetry at half that velocity (c/2). This isn't so hard to add as a constraint in LLSSS and would allow searching for types of signals where no such checkerboard dual trick applies (especially VT=4K+2 B0 velocities).

Thanks to May13 (and of course everyone contributing) for new-gliders.db which made finding a test case a very simple matter, e.g. there is a "c/5" in B0124/S01235 found by DroneBetter. With "half_v_toggle" constraint implemented, this is easy enough to find at 2c/10 in just a few minutes:

Code: Select all

$ rlife llsss 2c10-f2b --bg-agar 'b0' --rule 'B0124/S01235' '@bg:10' --left-edge odd --filters bcaf --constraint half_v_toggle --llsss-env LLSSS_HALT_ON_ENDS=true
...
20250826 10:06:18 [INFO] End (("LlsssEndsAgar", "b0")):
20250826 10:06:18 [INFO] |            |            |            |            |            | ********** | .......... | ********** | .......... | ********** |
20250826 10:06:18 [INFO] | .......... | ********** | .......... | ********** | .......... | ********** | .......... | ********** | .......... | ********** |
20250826 10:06:18 [INFO] | .......... | ********** | .......... | ********** | .......... | ***.****** | ..*....... | ***.****** | .......... | **...***** |
20250826 10:06:18 [INFO] | ...*...... | **.******* | ...*...... | ********** | ..***..... | *.*.****** | ..**...... | **.*.***** | .*****.... | .*..****** |
20250826 10:06:18 [INFO] | .*.*...... | **..****** | ..*.*..... | *.....**** | *.**...... | *....***** | *.***..... | *.....**** | *.**...... | *......*** |
20250826 10:06:18 [INFO] | .****..... | .*...***** | .*****.... | .*..****** | .******... | .....***** | ****.**... | .....***** | *******... | ....****** |
20250826 10:06:18 [INFO] | *****..... | ....*..*** | *****..... | .......*** | ****...... | ...*....** | ****.*.... | .......*** | *****..... | ...**...** |
20250826 10:06:18 [INFO] | ***.****.. | ....*.**** | *******... | .....***** | ***..***.. | .....***** | **..**.*.. | .....*.*** | **...***.. | ....****** |
20250826 10:06:18 [INFO] | *****..... | ..**..*.** | *****.*... | ..***...** | ****...... | ..**.*.*** | ****...... | .****..*** | .***...... | ..***...** |
20250826 10:06:18 [INFO] | **..*.*... | ....****** | *....**... | *...****** | **...***.. | ...*.***** | *....*.... | *...****** | *...***... | *...****** |
20250826 10:06:18 [INFO] | ***.*..... | .****.**** | .***...... | .***...*** | .***...... | .***..**** | ..***..... | *****.**** | .......... | *****.**** |
20250826 10:06:18 [INFO] | *...**.... | **...***** | .....*.... | ********** | .....*.... | ***..***** | .....*.... | ***..***** | *......... | ***.****** |
20250826 10:06:18 [INFO] | ...**..... | *****.**** | ...**..... | .********* | ...*...... | ********** | .......... | ..******** | ..***..... | *.******** |
20250826 10:06:18 [INFO] | .......... | ********** | **........ | **...***** | .*........ | ***..***** | ***....... | ***.****** | ***....... | *.*..***** |
20250826 10:06:18 [INFO] | ...**..... | ...******* | ...*...... | ...******* | .*.**..... | ...******* | ...**..... | ....****** | *...*..... | ....****** |
20250826 10:06:18 [INFO] | ***....... | ***..***** | ****...... | .***.***** | ****...... | ....****** | ****...... | *.*.****** | *****..... | *.*.****** |
20250826 10:06:18 [INFO] | ****...... | ....****** | .*.*...... | .....***** | .*.*...... | .*..****** | **.*...... | ...*.***** | ..*....... | ..*..***** |
20250826 10:06:18 [INFO] | *.**...... | ..*.****** | ***.*..... | **.******* | **.**..... | .*.******* | **.*...... | .*.******* | **.*...... | *.******** |
20250826 10:06:18 [INFO] | *.*....... | ..*.****** | *.*....... | ..*.****** | .*........ | ..******** | *.*....... | ..******** | *.*....... | ..******** |
20250826 10:06:18 [INFO] | **........ | .*.******* | **........ | .*.******* | **........ | .*.******* | **........ | .*.******* | **........ | ....****** |
20250826 10:06:18 [INFO] | *.*....... | ..******** | *.*....... | ..******** | ****...... | ..******** | **........ | ...******* | ****...... | ...******* |
20250826 10:06:18 [INFO] | **........ | ..******** | ***....... | ....****** | ***....... | ...******* | .*........ | ...******* | **........ | ...******* |
20250826 10:06:18 [INFO] | ***....... | *.******** | ***....... | ..******** | ***....... | ********** | **........ | .********* | **........ | ********** |
20250826 10:06:18 [INFO] | .......... | ..******** | *......... | ..******** | .......... | ********** | .......... | .********* | .......... | .********* |
20250826 10:06:18 [INFO] | .......... | ********** | *......... | ********** | *......... | ********** | .......... | ********** | .......... | ********** |
20250826 10:06:18 [INFO] | .......... | ********** | .......... | ********** | .......... | ********** | .......... | ********** | .......... | ********** |
20250826 10:06:18 [INFO] | .......... | ********** | .......... | ********** | .......... |            |            |            |            |            |
20250826 10:06:18 [INFO] End (("LlsssEndsAgar", "b0")):
20250826 10:06:18 [INFO] |            |            |            |            |            | .......... | ********** | .......... | ********** | .......... |
20250826 10:06:18 [INFO] | ********** | .......... | ********** | .......... | ********** | .......... | ********** | .......... | ********** | .......... |
20250826 10:06:18 [INFO] | ********** | .......... | ********** | .......... | ********** | ...*...... | **.******* | ...*...... | ********** | ..***..... |
20250826 10:06:18 [INFO] | ***.****** | ..*....... | ***.****** | .......... | **...***** | .*.*...... | **..****** | ..*.*..... | *.....**** | *.**...... |
20250826 10:06:18 [INFO] | *.*.****** | ..**...... | **.*.***** | .*****.... | .*..****** | .****..... | .*...***** | .*****.... | .*..****** | .******... |
20250826 10:06:18 [INFO] | *....***** | *.***..... | *.....**** | *.**...... | *......*** | *****..... | ....*..*** | *****..... | .......*** | ****...... |
20250826 10:06:18 [INFO] | .....***** | ****.**... | .....***** | *******... | ....****** | ***.****.. | ....*.**** | *******... | .....***** | ***..***.. |
20250826 10:06:18 [INFO] | ...*....** | ****.*.... | .......*** | *****..... | ...**...** | *****..... | ..**..*.** | *****.*... | ..***...** | ****...... |
20250826 10:06:18 [INFO] | .....***** | **..**.*.. | .....*.*** | **...***.. | ....****** | **..*.*... | ....****** | *....**... | *...****** | **...***.. |
20250826 10:06:18 [INFO] | ..**.*.*** | ****...... | .****..*** | .***...... | ..***...** | ***.*..... | .****.**** | .***...... | .***...*** | .***...... |
20250826 10:06:18 [INFO] | ...*.***** | *....*.... | *...****** | *...***... | *...****** | *...**.... | **...***** | .....*.... | ********** | .....*.... |
20250826 10:06:18 [INFO] | .***..**** | ..***..... | *****.**** | .......... | *****.**** | ...**..... | *****.**** | ...**..... | .********* | ...*...... |
20250826 10:06:18 [INFO] | ***..***** | .....*.... | ***..***** | *......... | ***.****** | .......... | ********** | **........ | **...***** | .*........ |
20250826 10:06:18 [INFO] | ********** | .......... | ..******** | ..***..... | *.******** | ...**..... | ...******* | ...*...... | ...******* | .*.**..... |
20250826 10:06:18 [INFO] | ***..***** | ***....... | ***.****** | ***....... | *.*..***** | ***....... | ***..***** | ****...... | .***.***** | ****...... |
20250826 10:06:18 [INFO] | ...******* | ...**..... | ....****** | *...*..... | ....****** | ****...... | ....****** | .*.*...... | .....***** | .*.*...... |
20250826 10:06:18 [INFO] | ....****** | ****...... | *.*.****** | *****..... | *.*.****** | *.**...... | ..*.****** | ***.*..... | **.******* | **.**..... |
20250826 10:06:18 [INFO] | .*..****** | **.*...... | ...*.***** | ..*....... | ..*..***** | *.*....... | ..*.****** | *.*....... | ..*.****** | .*........ |
20250826 10:06:18 [INFO] | .*.******* | **.*...... | .*.******* | **.*...... | *.******** | **........ | .*.******* | **........ | .*.******* | **........ |
20250826 10:06:18 [INFO] | ..******** | *.*....... | ..******** | *.*....... | ..******** | *.*....... | ..******** | *.*....... | ..******** | ****...... |
20250826 10:06:18 [INFO] | .*.******* | **........ | .*.******* | **........ | ....****** | **........ | ..******** | ***....... | ....****** | ***....... |
20250826 10:06:18 [INFO] | ..******** | **........ | ...******* | ****...... | ...******* | ***....... | *.******** | ***....... | ..******** | ***....... |
20250826 10:06:18 [INFO] | ...******* | .*........ | ...******* | **........ | ...******* | .......... | ..******** | *......... | ..******** | .......... |
20250826 10:06:18 [INFO] | ********** | **........ | .********* | **........ | ********** | .......... | ********** | *......... | ********** | *......... |
20250826 10:06:18 [INFO] | ********** | .......... | .********* | .......... | .********* | .......... | ********** | .......... | ********** | .......... |
20250826 10:06:18 [INFO] | ********** | .......... | ********** | .......... | ********** | .......... | ********** | .......... | ********** | .......... |
20250826 10:06:18 [INFO] | ********** | .......... | ********** | .......... | ********** |            |            |            |            |            |
20250826 10:06:18 [WARNING] Halt requested (ends), stopping...
20250826 10:06:18 [INFO] VmPeak: 1.35 GB
...
20250826 10:06:18 [INFO] Total: 132.481719845s (760.938193s user, 65.0683s sys)
20250826 10:06:18 [INFO] Done
Normally I would not be optimistic to search at such a high VT (10), but with the constraint it acts much more like 5.

I cruised the multiverse of self-dual rules for a bit, hoping to get lucky and find a B0 "2c/3" signal (which I think I verified I could not find in new-gliders.db, neither as 2c/3 nor as 4c/6).

A wickstetcher is easy enough to find, e.g.:

Code: Select all

$ rlife llsss-recentering-wao 4c6-f2b --bg-agar 'b0' --rule 'B01348/S1236' '@bg' --constraint half_v_toggle 14 --llsss-env LLSSS_HALT_ON_ENDS=true --ends bg,s_periodic:0:0:2
...
20250826 10:50:27 [INFO] End [thinnest] "LlsssEndsSPeriodic([Vec3(0, 0, 2)])":
20250826 10:50:27 [INFO] |                     |                     |                     |                     | ZZZZZZZZZZZZZZZZZZZ | ................... |
20250826 10:50:27 [INFO] |                     |                     |                     | ................... | ******************* | ................... |
20250826 10:50:27 [INFO] |                     | ZZZZZZZZZZZZZZZZZZZ | ******************* | ................... | ******************* | ........*.*........ |
20250826 10:50:27 [INFO] | ******************* | ................... | ******************* | .........*......... | ********...******** | .......*.*.*....... |
20250826 10:50:27 [INFO] | ******************* | ................... | ********.*.******** | .......*...*....... | *****.**.*.**.***** | ....*.*..*..*.*.... |
20250826 10:50:27 [INFO] | *********.********* | ........***........ | *******.*.*.******* | .....**.....**..... | ****.**.***.**.**** | ...*.**.....**.*... |
20250826 10:50:27 [INFO] | *******.***.******* | .....*..*.*..*..... | ****.*.**.**.*.**** | ...*...........*... | ***.*****.*****.*** | .....*.*...*.*..... |
20250826 10:50:27 [INFO] | *****..*****..***** | ....*..*...*..*.... | ***.*..*****..*.*** | .....**.*.*.**..... | ****.***...***.**** | ......*.***.*...... |
20250826 10:50:27 [INFO] | ***.***********.*** | ...*.....*.....*... | *****.*.***.*.***** | ......*.....*...... | ****.*..*.*..*.**** | .......**.**....... |
20250826 10:50:27 [INFO] | *****..*.*.*..***** | ....*...***...*.... | ******.*...*.****** | .....*.*****.*..... | ****.**.....**.**** | ...*.****.****.*... |
20250826 10:50:27 [INFO] | ******.*****.****** | ....*.**.*.**.*.... | *******..*..******* | ....*.*.***.*.*.... | *****...***...***** | ......*******...... |
20250826 10:50:27 [INFO] | *****.*.....*.***** | ....*..*****..*.... | ***.*....*....*.*** | ...**.**.*.**.**... | *****.*..*..*.***** | ......*..*..*...... |
20250826 10:50:27 [INFO] | ****.*.*...*.*.**** | .....***...***..... | ******.......****** | ....*.*.***.*.*.... | *****.*******.***** | ................... |
20250826 10:50:27 [INFO] | ***..*..*.*..*..*** | .....*.**.**.*..... | ******.**.**.****** | .....*.......*..... | ****.*.**.**.*.**** | .........*......... |
20250826 10:50:27 [INFO] | ****.*.*...*.*.**** | .....*.......*..... | ******************* | ........***........ | ******************* | .....*.......*..... |
20250826 10:50:27 [INFO] | *****.*******.***** | ....*.*..*..*.*.... | *********.********* | .........*......... | ******************* | ....*.........*.... |
20250826 10:50:27 [INFO] | ********...******** | ................... | *****.*******.***** | ....*.........*.... | ***.*.*******.*.*** | ..*...*.....*...*.. |
20250826 10:50:27 [INFO] | *********.********* | ................... | ****.*********.**** | ...*..*.....*..*... | ***.**.*****.**.*** | .....*.......*..... |
20250826 10:50:27 [INFO] | ****.*********.**** | ...*.*.......*.*... | **.***.*****.***.** | ..***.........***.. | ***.***********.*** | .....*.......*..... |
20250826 10:50:27 [INFO] | ***.**.*****.**.*** | ...*..*.....*..*... | *****.*******.***** | ....*.........*.... | ***..*********..*** | ...***.......***... |
20250826 10:50:27 [INFO] | **...*********...** | ...*...........*... | *****.*******.***** | ...**.........**... | **...*********...** | ...**.*.....*.**... |
20250826 10:50:27 [INFO] | ****.*********.**** | ...**.........**... | ***...*******...*** | ..*.**.......**.*.. | ***.*..*****..*.*** | ...***.......***... |
20250826 10:50:27 [INFO] | ***..*********..*** | ..***.........***.. | ***..*.*****.*..*** | ...***.......***... | ***...*******...*** | ...***.......***... |
20250826 10:50:27 [INFO] | **.*..*******..*.** | ...*.**.....**.*... | ***...*******...*** | ...***.......***... | ***...*******...*** | ...***.......***... |
20250826 10:50:27 [INFO] | ***...*******...*** | ...***.......***... | ***...*******...*** | ...***.......***... | ***...*******...*** |                     |
20250826 10:50:27 [INFO] | ***...*******...*** | ...***.......***... | ***...*******...*** | ...***.......***... |                     |                     |
20250826 10:50:27 [INFO] | ***...*******...*** | ...***.......***... |                     |                     |                     |                     |
20250826 10:50:27 [INFO] | ***...*******...*** |                     |                     |                     |                     |                     |
...
20250826 10:50:27 [WARNING] Halt requested (ends), stopping...
20250826 10:50:27 [INFO] VmPeak: 676.31 MB
...
20250826 10:50:27 [INFO] Total: 3.605910599s (6.982395s user, 5.151674s sys)
20250826 10:50:27 [INFO] Done
Unfortunately wickstetchers tend to gum up these searches and I had alot of trouble trying to dodge them and find a finite signal. My best guesses for rules had been, based on mid_steps=17 searches (that did not hit a wickstretcher) were B01358/S1246 (longest partial, mostly odd), B013456/S016 (second longest partial, mostly odd), and B0135/S01246 (third longest partial).

Then, instead, I took a long shot and did a bigger search on that first rule that had hit a wickstretcher (B01348/S1236), hoping it would get lucky and find a finite signal even as it choked horribly on the various wickstretchers:

Code: Select all

$ rlife llsss-recentering-wao 4c6-f2b --bg-agar 'b0' --rule 'B01348/S1236' '@bg' --left-edge odd --wao-left-edge-errors --constraint half_v_toggle --llsss-env LLSSS_HALT_ON_ENDS=true --wao-idx 0-2 --partials srv2 --pre-reify-autochoke 16MB XX
...
20250826 11:13:18 [INFO] End [thinnest] ("LlsssEndsAgar", "b0"):
20250826 11:13:18 [INFO] |                     |                     |                     |                     | ZZZZZZZZZZZZZZZZZZZ | ................... |
20250826 11:13:18 [INFO] |                     |                     |                     | ................... | ******************* | ................... |
20250826 11:13:18 [INFO] |                     | ZZZZZZZZZZZZZZZZZZZ | ******************* | ................... | ******************* | ........*.*........ |
20250826 11:13:18 [INFO] | ******************* | ................... | ******************* | .........*......... | ********...******** | .......*.*.*....... |
20250826 11:13:18 [INFO] | ******************* | ................... | ********.*.******** | .......*...*....... | ********.*.******** | .....****.****..... |
20250826 11:13:18 [INFO] | *********.********* | ........***........ | *******.*.*.******* | .....*.*****.*..... | ****.*.......*.**** | ...*...*.*.*...*... |
20250826 11:13:18 [INFO] | *******.***.******* | ........*.*........ | *****....*....***** | ....*.***.***.*.... | ***.**.*****.**.*** | .....*********..... |
20250826 11:13:18 [INFO] | *****.*.....*.***** | ....*.*******.*.... | ***.***.*.*.***.*** | ...*..*.***.*..*... | ****.*.......*.**** | .....**.***.**..... |
20250826 11:13:18 [INFO] | ****.*...*...*.**** | ...*..*.....*..*... | *****.........***** | ......**...**...... | ****.*.......*.**** | ...*.*********.*... |
20250826 11:13:18 [INFO] | ***.**.*...*.**.*** | ....*.*******.*.... | *****..*...*..***** | .....**.***.**..... | ******.......****** | ......*******...... |
20250826 11:13:18 [INFO] | ******..***..****** | ....*.*******.*.... | ***.*.........*.*** | ...*.*.*****.*.*... | ******.......****** | ......*******...... |
20250826 11:13:18 [INFO] | *****..*...*..***** | ......*******...... | ******.......****** | ....*..*****..*.... | ***.**.*...*.**.*** | ..*....*****....*.. |
20250826 11:13:18 [INFO] | ***.*.*.....*.*.*** | ......*******...... | ******.......****** | .....*********..... | ***..**.....**..*** | .......*****....... |
20250826 11:13:18 [INFO] | ****.**.....**.**** | ...*..*.***.*..*... | **.****.....****.** | ..*.....***.....*.. | **.**.*.....*.**.** | .......****.*...... |
20250826 11:13:18 [INFO] | *****.........***** | ...**..*****..**... | *******.....******* | .......*****....... | *******.*....****** | ........*.*.**..... |
20250826 11:13:18 [INFO] | **.*****...*****.** | ..*..*.*****.*..*.. | *******....*.****** | ......**.***....... | ********.*..******* | .*........**....... |
20250826 11:13:18 [INFO] | *******.....******* | .......*.****...... | ********.*.*..***** | *........***....... | ..****..***.******* | *..*......*.*...... |
20250826 11:13:18 [INFO] | ******..*...******* | ........*.**....... | *.********..******* | ..*........*....... | *...*****..******** | ..*..*..*..*....... |
20250826 11:13:18 [INFO] | .********...******* | **....**...*....... | .**.******.*.****** | ....*......*....... | ...***.************ | ***....****........ |
20250826 11:13:18 [INFO] | **.********.******* | .***.....**........ | **.**.**.**.******* | .*..***..*..*...... | .***..*.*********** | .*...*...**........ |
20250826 11:13:18 [INFO] | ****.******.******* | ***...*............ | ...****....******** | **.***..***........ | ...*..**..*.******* | .*.***..*...*...... |
20250826 11:13:18 [INFO] | *.**...**.**.****** | *...**.*........... | *.***.***..******** | ***.....**......... | **..**.*..*.******* | **.*.....**........ |
20250826 11:13:18 [INFO] | ..*...**...******** | ***.**..**.*....... | *.*...**.***.****** | *.*.*.*..*..*...... | ....******..******* | .***........*...... |
20250826 11:13:18 [INFO] | ...*****..********* | ..**..*.**.*....... | ..*.*****..******** | .*****..*...**..... | .***.*..*********** | .***....****....... |
20250826 11:13:18 [INFO] | .*.*.*.**.**.****** | ****......**....... | *...********.****** | ****.....**........ | .....*.*.********** | **.***...*......... |
20250826 11:13:18 [INFO] | *.....**.***..***** | *...*.**........... | *...****....******* | ******......*...... | .**..****.***.***** | .****........*..... |
20250826 11:13:18 [INFO] | ....*****..******** | *****.*.*.......... | ..*...***.********* | .*..*......**...... | **...***.********** | *.*.*....*......... |
20250826 11:13:18 [INFO] | ......******.****** | *..**....*...*..... | *....********.***** | ***.*...***..*..... | .*..*.************* | .*..*.*.*.......... |
20250826 11:13:18 [INFO] | *.**.******..****** | ..***...*.......... | .*.*.****.********* | ****...**.......... | ....**.*.*.******** | .***.*...**........ |
20250826 11:13:18 [INFO] | ...*.***...**.***** | *.**.*............. | *.**.*.*.********** | ****...*........... | ....***.*********** | ****.....*......... |
20250826 11:13:18 [INFO] | ....***..********** | ****..*.*.*........ | *...*.***..******** | **.*..**........... | ....***.*********** | *****.*............ |
20250826 11:13:18 [INFO] | ....***.*********** | ****...*........... | ....*****.********* | ***.*.*.*.......... | ..*.....*********** | *******............ |
20250826 11:13:18 [INFO] | ..*.**..*********** | ****...*........... | .....*.************ | ******.*........... | ...*..**.********** | ****.**............ |
20250826 11:13:18 [INFO] | ...*.*.*.********** | **.*****........... | .......************ | ****..*............ | ...*...************ | *******............ |
20250826 11:13:18 [INFO] | ......*.*********** | ***.**..*.......... | ....*..************ | ****.**............ | ...*...************ | *.*****............ |
20250826 11:13:18 [INFO] | ....**.************ | ***.***............ | .......************ | .******............ | **.*...************ | .*.****............ |
20250826 11:13:18 [INFO] | ....*..************ | ***.***............ | .*.....************ | **.****............ | .*.*...************ | *...***............ |
20250826 11:13:18 [INFO] | *......************ | ..*.***............ | *.*....************ | ...****............ | *****..************ | .*..***............ |
20250826 11:13:18 [INFO] | ..*....************ | *.*.***............ | .***...************ | *....**............ | ...*...************ | ...*.**............ |
20250826 11:13:18 [INFO] | ***....************ | .....**............ | *.**...************ | ..*.***............ | ******.************ | ..*..**............ |
20250826 11:13:18 [INFO] | .****..************ | ***.***............ | ***.*..************ | **..*.*............ | ****...************ | .....**............ |
20250826 11:13:18 [INFO] | **.*...************ | ......*............ | **.**..************ | ...*.**............ | *****..************ | ...**.*............ |
20250826 11:13:18 [INFO] | ..**.*.************ | ....***............ | *****..************ | ..*..**............ | ***.*..************ | .....**............ |
20250826 11:13:18 [INFO] | ***.*..************ | .....**............ | ***..*.************ | .....**............ | **..**.************ | ................... |
20250826 11:13:18 [INFO] | **.**..************ | ...*.**............ | *****..************ | ...*...*........... | ***.**.************ | ................... |
20250826 11:13:18 [INFO] | *****..************ | ..**..*............ | ******************* | .....**............ | ****.**.*********** | ...*............... |
20250826 11:13:18 [INFO] | ***.***.*********** | ...*..*............ | ******************* | ................... | *****..************ | ..*....*........... |
20250826 11:13:18 [INFO] | *****..************ | ....*..*........... | ***.*************** | ..*................ | **..*************** | ....*...*.......... |
20250826 11:13:18 [INFO] | ******************* | .....**............ | **.****.*********** | ....*...*.......... | ***...*..********** | ....*.*............ |
20250826 11:13:18 [INFO] | **.**************** | ..**............... | ****.***.********** | ......*............ | *****...*********** | ...*..*............ |
20250826 11:13:18 [INFO] | ****.***.********** | ...***.**.......... | ****.*.************ | ................... | ******************* | .....*.*........... |
20250826 11:13:18 [INFO] | ******.************ | .....***........... | ***.**.************ | ................... | ******************* | ................... |
20250826 11:13:18 [INFO] | ******************* | ................... | *****.*.*********** | ....*.............. | ***.*************** | ...*............... |
20250826 11:13:18 [INFO] | ******************* | ................... | ******************* | ....*.*............ | ******.************ | .....*............. |
20250826 11:13:18 [INFO] | ****.************** | ...*............... | ***.*************** | ...**.............. | ******..*********** | .....*..*.......... |
20250826 11:13:18 [INFO] | ****.*.************ | ......*............ | *****.************* | ......*............ | ********.********** | ......*............ |
20250826 11:13:18 [INFO] | ***..************** | ......**........... | *****.**.********** | ....*..**.......... | ***.*************** | ...*...***......... |
20250826 11:13:18 [INFO] | ******.************ | ........*.......... | ******.************ | ....**............. | ********.********** | ........*.......... |
20250826 11:13:18 [INFO] | ****.**..********** | ...*............... | ***.***...********* | ...*..*............ | ******************* | ................... |
20250826 11:13:18 [INFO] | ****..************* | ........*.......... | ********.********** | ................... | ******************* | ................... |
20250826 11:13:18 [INFO] | ***.**.************ | ................... | ******************* | ................... |                     |                     |
20250826 11:13:18 [INFO] | ******************* | ................... | ******************* |                     |                     |                     |
20250826 11:13:18 [INFO] | ******************* |                     |                     |                     |                     |                     |
...
20250826 11:13:18 [WARNING] Halt requested (ends), stopping...
20250826 11:13:18 [INFO] VmPeak: 704.35 MB
...
20250826 11:13:18 [INFO] Total: 197.743035848s (742.802664s user, 79.556347s sys)
20250826 11:13:18 [INFO] Done

Code: Select all

#C [[ TRACK 0 -2/3 ]]
x = 33, y = 55, rule = B01348/S1236
6b3o15b3o$6bobo15bobo$2bob7obo7bob7obo$bo2bo5bo2bo5bo2bo5bo2bo$2bob7ob
o7bob7obo$2bob7obo7bob7obo$4b7o11b7o$4b7o11b7o$bo2bob3obo2bo5bo2bob3ob
o2bo$b2o2b5o2b2o5b2o2b5o2b2o$o2bob5obo2bo3bo2bob5obo2bo$4b4obo13bob4o$
5b2obo15bob2o$5bo3b2o4b3o4b2o3bo$6b2o5b3ob3o5b2o$10bo3b5o3bo$9bob2o3bo
3b2obo$5bob2o2b2ob5ob2o2b2obo$5bob2obo2b2o3b2o2bob2obo$5b2o6b7o6b2o$9b
2obo3bo3bob2o$8bobob9obobo$3bo3bo4b2o2bo2b2o4bo3bo$8bo3b3o3b3o3bo$11bo
b2obob2obo$6bobobo2b7o2bobobo$9bo3b7o3bo$9bo3b7o3bo$9b5ob3ob5o$8bo2b2o
b5ob2o2bo$10b3ob5ob3o$10b3ob5ob3o$10b3obo3bob3o$10b3obobobob3o$10b2o9b
2o$10b3ob5ob3o$10bo11bo$10b3o7b3o$10b2o9b2o$10b2obo5bob2o$10bo2b2o3b2o
2bo$10bo2bo5bo2bo$9bo2bo7bo2bo$10b2o9b2o$13b2o3b2o$8b2ob3o5b3ob2o$9b3o
9b3o3$13bo5bo$10bo11bo$9b2o11b2o$8bo15bo$13bo5bo$8bo15bo!
I've pushed the changes to codeberg just now.

EDIT: As I stared at the 4c/6 result in lifeviewer (which complements every other generation) I realized there is a dual trick that will allow searching directly at half period so long as VT is 4K+2, e.g. the above 4c/6 can be found as 2c/3 in B2567/S04578. Perhaps the half_v_toggle constraint could still be used to search in an agar that inverts itself in an even number of generations (so VT=4K), but I struggle to think of one.

EDIT: And as I thought about it more, I've realized that isn't quite right. It's not that the agar must invert in an even number of generations, it's that it must appear inverted and shifted (per V/2) in an even number of generations. E.g. searching for a signal at 2c/4 in against-the-grain zebra stripes (in a self-dual rule) but requiring it invert after c/2 could be done with this constraint. This I think could be hacked with a not-even-isotropic dual rule trick (rule table is per the original but every other horizontal line is inverted), but for something even worse like width-2 chicken wire against the grain at 2c/4 I can't think of a dual trick. Anyway, I will probably leave it as is and try to forget all this to go work on something perhaps more immediately useful.
Last edited by amling on August 26th, 2025, 4:55 pm, edited 1 time in total.

amling
Posts: 1154
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling » August 28th, 2025, 2:47 pm

Some ideas I had long been kicking around about horizontal slices are finally coming together. All of the following had been things I had wished to improve:

(1) EDBV3 only works with zero agars (ugh, and only for S23/B3). What about other background agars? What about seams between two different agars? For the former you'd need to track position in the agar of slices and for the latter you'd even need to track two positions (two agars) and have some explicit notion of what is considered an acceptable bottom slice of a completed result.

(2) Constructing input files for WAO searchs for wick fronts or backs is a pain. Like I know how to do it, but it's a lot of hacking on grids and and stitching together these annoyingly large and hard-to-read input files.

(3) Something something one generation partials. I'll try to omit most of my usual ranting and raving about how they make no sense. I had been thinking about automating the later steps of the workflow that begins with dumping multiple generations out of golly, PD 2-folding them, picking some cut-off above the mismatches, etc.

It's the last one that I was really thinking about and I decided that picking a maximum area UW rectangle of tiles that have no disagreements is probably good enough and is also probably feasible computationally. As I considered the details of how to implement it, what it should output, etc., I realized it could cover (2) pretty easily and could represent a real step towards the ultimate goal of fixing (1).

The prototype so far is built in two steps. The first takes a single generation, simulates it 2*VT generations, finds the maximum area matching UW rectangle, and dumps some or all horizontal slices out in an intermediate format. The second takes such a dump, and makes an input file that could be used with recentering that represents the union of those slices. To extend a single generation partial you would dump one W overlap height slice from the bottom. To extend a wick/wave you'd dump all W overlap + 1 height slices and use WAO.

Perhaps some examples will help illustrate. Everything about this is of course subject to negotiation, but here is how it works right now...

First, let's consider trying to take a single generation of that (2, 1)c/3 ship from B25/S24 and make a recentering input file to extend it.

The input single generation, block copy/pasted from some LLSSS output or another:

Code: Select all

$ cat 1.l
............................
............................
............................
...**.**....*...............
..****...*.*................
...**.*.....*...............
.....*.**.*.................
..***.*.....................
...*..**....................
.........*.**...............
......*......*..............
.........**.*.*.*...*.......
.............**.**.*........
.........*...*...*..........
.........*..***...**........
.......*.***.**...**........
..........*..***............
..........***...............
..........***..*..*.........
.............**.**..........
.........***.**.**.*........
............*.*...*.........
...........*....*.....*.....
...........*.***...*........
$
Now to analyze it and save the result as 1.slice:

Code: Select all

$ rlife slices-tool ingest-1gp --rule 'B25/S24' c3k-1 1.l 1.slice
(a ton of output about the various stages of analysis snipped)
20250828 10:46:41 [INFO] New aligned slice:
20250828 10:46:41 [INFO]    |                  |                  | LLuuuuuuuuuuuuRR |
20250828 10:46:41 [INFO]    | LLuuuuuuuuuuuuRR | LLuuuuuuuuuuuuRR | ...*.**...*..... |
20250828 10:46:41 [INFO]    | ..***.**.**.*... | ...**..**.*..... | ...**.*..*.*.*.. |
20250828 10:46:41 [INFO]    | .....*.*...*.... | ..*....*...**... |                  |
20250828 10:46:41 [INFO] Total of 1 slices.
20250828 10:46:41 [INFO] Saved to "1.slice".
$
It shows "New aligned slice" every time it encounters a slice it hasn't already found and it shows it with one U overlap worth of agar on either side (marked L/R in roots). With no additional args it picks one subtile alignment at random and cuts one slice of W overlap height from the bottom. I think this is probably reasonable behavior for the common case.

Now to build the input file...

Code: Select all

$ rlife slices-tool to-rc-input c3k-1 1.slice 1.in
20250828 10:48:06 [INFO] Just one slice, building special format.
20250828 10:48:06 [INFO] Saved to "1.in".
$ cat 1.in
|                    |                    | AAAuuuuuuuuuuuuBBB |
| AAAuuuuuuuuuuuuBBB | AAAuuuuuuuuuuuuBBB | ....*.**...*...... |
| ...***.**.**.*.... | ....**..**.*...... | ....**.*..*.*.*... |
| ......*.*...*..... | ...*....*...**.... |                    |
$
This is mostly just formatting it out as above, but also has to add loops for the agars on the sides.

If you want the entire pattern kept you can add "--w-size MAX" to the ingest:

Code: Select all

$ rlife slices-tool ingest-1gp --rule 'B25/S24' c3k-1 --w-size MAX 1.l 1.slice
...
20250828 10:52:51 [INFO] New aligned slice:
20250828 10:52:51 [INFO]    |                          |                          | LLuuuuuuuuuuuuuuuuuuuuRR |
20250828 10:52:51 [INFO]    | LLuuuuuuuuuuuuuuuuuuuuRR | LLuuuuuuuuuuuuuuuuuuuuRR | ........................ |
20250828 10:52:51 [INFO]    | ........................ | ........................ | ........................ |
20250828 10:52:51 [INFO]    | ........................ | ........................ | ........................ |
20250828 10:52:51 [INFO]    | ........................ | ........................ | ........................ |
20250828 10:52:51 [INFO]    | ........................ | ........................ | ........................ |
20250828 10:52:51 [INFO]    | ........................ | ........................ | ........................ |
20250828 10:52:51 [INFO]    | ........................ | ........................ | ........................ |
20250828 10:52:51 [INFO]    | ........................ | ........................ | ........................ |
20250828 10:52:51 [INFO]    | ........................ | ........................ | ........................ |
20250828 10:52:51 [INFO]    | ........................ | ........................ | ........................ |
20250828 10:52:51 [INFO]    | ........................ | ........................ | ........................ |
20250828 10:52:51 [INFO]    | ........................ | ........................ | ...*...*................ |
20250828 10:52:51 [INFO]    | ........................ | ...*****................ | ..*.**..****............ |
20250828 10:52:51 [INFO]    | ...**.**....*........... | ...**.*.*.**............ | ..*.**.**............... |
20250828 10:52:51 [INFO]    | ..****...*.*............ | ........*.**.*.......... | ..*...*................. |
20250828 10:52:51 [INFO]    | ...**.*.....*........... | ...*.*.................. | ..*****.*............... |
20250828 10:52:51 [INFO]    | .....*.**.*............. | ...***...*.*............ | ....*..*................ |
20250828 10:52:51 [INFO]    | ..***.*................. | ..*...**.*.............. | ......***.*............. |
20250828 10:52:51 [INFO]    | ...*..**................ | ......***.***........... | ......*.**.*............ |
20250828 10:52:51 [INFO]    | .........*.**........... | .....*..*.*.**.......... | .......*.***...*........ |
20250828 10:52:51 [INFO]    | ......*......*.......... | ........*.....**........ | .......*..*.**.*****.... |
20250828 10:52:51 [INFO]    | .........**.*.*.*...*... | ...........***..*.**.... | .......******....*.**... |
20250828 10:52:51 [INFO]    | .............**.**.*.... | ........*..*.*......*... | .......*....*..*...***.. |
20250828 10:52:51 [INFO]    | .........*...*...*...... | ........*.*...*...*.*... | .......*..*......*.**... |
20250828 10:52:51 [INFO]    | .........*..***...**.... | ..........*.*.**..*.*... | ..........**..***.***... |
20250828 10:52:51 [INFO]    | .......*.***.**...**.... | ..........*.*....*..*... | ...........*..*..*.***.. |
20250828 10:52:51 [INFO]    | ..........*..***........ | ........*...****..**.... | ..........**.***..***... |
20250828 10:52:51 [INFO]    | ..........***........... | ..........*.*...*....... | ........*....*..****.... |
20250828 10:52:51 [INFO]    | ..........***..*..*..... | .........*..*..*........ | .........*..**.**.*..... |
20250828 10:52:51 [INFO]    | .............**.**...... | ..........********.*.... | ..........*.**...*...... |
20250828 10:52:51 [INFO]    | .........***.**.**.*.... | ..........**..**.*...... | ..........**.*..*.*.*... |
20250828 10:52:51 [INFO]    | ............*.*...*..... | .........*....*...**.... |                          |
20250828 10:52:51 [INFO] Total of 1 slices.
20250828 10:52:51 [INFO] Saved to "1.slice".
$ rlife slices-tool to-rc-input c3k-1 1.slice 1.in
20250828 10:53:24 [INFO] Just one slice, building special format.
20250828 10:53:24 [INFO] Saved to "1.in".
$ cat 1.in
|                            |                            | AAAuuuuuuuuuuuuuuuuuuuuBBB |
| AAAuuuuuuuuuuuuuuuuuuuuBBB | AAAuuuuuuuuuuuuuuuuuuuuBBB | .......................... |
| .......................... | .......................... | .......................... |
| .......................... | .......................... | .......................... |
| .......................... | .......................... | .......................... |
| .......................... | .......................... | .......................... |
| .......................... | .......................... | .......................... |
| .......................... | .......................... | .......................... |
| .......................... | .......................... | .......................... |
| .......................... | .......................... | .......................... |
| .......................... | .......................... | .......................... |
| .......................... | .......................... | .......................... |
| .......................... | .......................... | ....*...*................. |
| .......................... | ....*****................. | ...*.**..****............. |
| ....**.**....*............ | ....**.*.*.**............. | ...*.**.**................ |
| ...****...*.*............. | .........*.**.*........... | ...*...*.................. |
| ....**.*.....*............ | ....*.*................... | ...*****.*................ |
| ......*.**.*.............. | ....***...*.*............. | .....*..*................. |
| ...***.*.................. | ...*...**.*............... | .......***.*.............. |
| ....*..**................. | .......***.***............ | .......*.**.*............. |
| ..........*.**............ | ......*..*.*.**........... | ........*.***...*......... |
| .......*......*........... | .........*.....**......... | ........*..*.**.*****..... |
| ..........**.*.*.*...*.... | ............***..*.**..... | ........******....*.**.... |
| ..............**.**.*..... | .........*..*.*......*.... | ........*....*..*...***... |
| ..........*...*...*....... | .........*.*...*...*.*.... | ........*..*......*.**.... |
| ..........*..***...**..... | ...........*.*.**..*.*.... | ...........**..***.***.... |
| ........*.***.**...**..... | ...........*.*....*..*.... | ............*..*..*.***... |
| ...........*..***......... | .........*...****..**..... | ...........**.***..***.... |
| ...........***............ | ...........*.*...*........ | .........*....*..****..... |
| ...........***..*..*...... | ..........*..*..*......... | ..........*..**.**.*...... |
| ..............**.**....... | ...........********.*..... | ...........*.**...*....... |
| ..........***.**.**.*..... | ...........**..**.*....... | ...........**.*..*.*.*.... |
| .............*.*...*...... | ..........*....*...**..... |                            |
$
Second, let's consider a more interesting agar. Say that 3c/6 blocks edge crawler. I saved a random generation (shown below under "Loaded file") as 2.rle.

Code: Select all

$ rlife slices-tool ingest-1gp --left-agar blocks 3c6-f2b 2.rle 2.slice
20250828 10:55:02 [INFO] Loaded file:
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** ** **                   |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** ** **                   |
20250828 10:55:02 [INFO]    |                                                 |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** ** **                   |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** ** **                   |
20250828 10:55:02 [INFO]    |                                                 |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** ** **                   |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** ** **                   |
20250828 10:55:02 [INFO]    |                                                 |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** ** **                   |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** ** **                   |
20250828 10:55:02 [INFO]    |                                                 |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** ** **                   |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** ** **                   |
20250828 10:55:02 [INFO]    |                                                 |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** ** **                   |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** ** **                   |
20250828 10:55:02 [INFO]    |                                                 |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** ** **                   |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** ** **                   |
20250828 10:55:02 [INFO]    |                                                 |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** ** **                   |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** ** **                   |
20250828 10:55:02 [INFO]    |                                                 |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** ** **                   |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** ** * **  *              |
20250828 10:55:02 [INFO]    |                                 ***             |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** **      *  **    *      |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** *   ***   ***   ***     |
20250828 10:55:02 [INFO]    |                         *  *              **    |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** * * *      *    * *     |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** * **  * *  *    *** **  |
20250828 10:55:02 [INFO]    |                         * *     *  ** **  **  * |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** * ****     * *          |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** *  * ** **          *   |
20250828 10:55:02 [INFO]    |                         *         *          ** |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** **  *   **** *   *  *   |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** * ** *      **  **  *** |
20250828 10:55:02 [INFO]    |                         * * ***    ** * *       |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** * *  *    *   * **      |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** * * ** * *  *   ** *    |
20250828 10:55:02 [INFO]    |                         * * *      *  **    *   |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** * *      * ** **   **** |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** * * * **  **    * * **  |
20250828 10:55:02 [INFO]    |                         * * *       *** *   *   |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** * ** *   *   ** *  *    |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** * * *     *   ** **     |
20250828 10:55:02 [INFO]    |                         * * *    *  ***     * * |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** * *   *     **    *     |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** *      ***   ** *     * |
20250828 10:55:02 [INFO]    |                         ** * * * **   * *    *  |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** **  *  ** **  * **  ** *   |
20250828 10:55:02 [INFO]    | ** ** ** ** ** ** ** ** **     *   *  *** **  * |
...
20250828 10:55:03 [INFO] New aligned slice:
20250828 10:55:03 [INFO]    |                             |                             |                             |                             |                             | LLuuuuuuuuuuuuuuuuuuuuuuuRR |
20250828 10:55:03 [INFO]    |                             |                             |                             | LLuuuuuuuuuuuuuuuuuuuuuuuRR | *.*.*.*..*..*...*.*.****... | *.*.*.*..****...*.*.*..*... |
20250828 10:55:03 [INFO]    |                             | LLuuuuuuuuuuuuuuuuuuuuuuuRR | ..*.*.*.*...***.*.*...**... | ..*.*.*.*...*.**..*.****... | ..*.*.*.**.**.**..*.****... | ..*.*.*........*........*.. |
20250828 10:55:03 [INFO]    | *.*.*..**..*...**.*.**..... | *.*.**.*...*...**.*..*..... | *.*.*..*......*...*.**..... | *.*.*...*..*..*...*........ |                             |                             |
20250828 10:55:03 [INFO]    | *.*.*..*****....*..*....... | *.*.*.*.....*...**.**...... |                             |                             |                             |                             |
20250828 10:55:03 [INFO] Total of 1 slices.
20250828 10:55:03 [INFO] Saved to "2.slice".
$ rlife slices-tool to-rc-input 3c6-f2b 2.slice 2.in
20250828 10:55:43 [INFO] Just one slice, building special format.
20250828 10:55:43 [INFO] Saved to "2.in".
$ cat 2.in
|                                 |                                 |                                 |                                 |                                 | ABCABuuuuuuuuuuuuuuuuuuuuuuuDDD |
|                                 |                                 |                                 | ABCABuuuuuuuuuuuuuuuuuuuuuuuDDD | *.**.*.*.*..*..*...*.*.****.... | *.**.*.*.*..****...*.*.*..*.... |
|                                 | ABCABuuuuuuuuuuuuuuuuuuuuuuuDDD | .....*.*.*.*...***.*.*...**.... | .....*.*.*.*...*.**..*.****.... | .....*.*.*.**.**.**..*.****.... | .....*.*.*........*........*... |
| *.**.*.*..**..*...**.*.**...... | *.**.*.**.*...*...**.*..*...... | *.**.*.*..*......*...*.**...... | *.**.*.*...*..*..*...*......... |                                 |                                 |
| *.**.*.*..*****....*..*........ | *.**.*.*.*.....*...**.**....... |                                 |                                 |                                 |                                 |
$
Or with "--w-size MAX":

Code: Select all

$ rlife slices-tool ingest-1gp --left-agar blocks 3c6-f2b --w-size MAX 2.rle 2.slice
...
20250828 10:58:05 [INFO] New aligned slice:
20250828 10:58:05 [INFO]    |                             |                             |                             |                             |                             | LLuuuuuuuuuuuuuuuuuuuuuuuRR |
20250828 10:58:05 [INFO]    |                             |                             |                             | LLuuuuuuuuuuuuuuuuuuuuuuuRR | *.**.**.................... | *.**.**.................... |
20250828 10:58:05 [INFO]    |                             | LLuuuuuuuuuuuuuuuuuuuuuuuRR | ........................... | ........................... | ........................... | ........................... |
20250828 10:58:05 [INFO]    | *.**.**.................... | *.**.**.................... | *.**.**.................... | *.**.**.................... | *.**.**.................... | *.**.**.................... |
20250828 10:58:05 [INFO]    | *.**.**.................... | *.**.**.................... | *.**.**.................... | *.**.**.................... | *.**.**.................... | *.**.**.................... |
20250828 10:58:05 [INFO]    | ........................... | ........................... | ........................... | ........................... | ........................... | ........................... |
20250828 10:58:05 [INFO]    | *.**.**.................... | *.**.**.................... | *.**.**.................... | *.**.**.................... | *.**.**.................... | *.**.**.................... |
20250828 10:58:05 [INFO]    | *.**.**.................... | *.**.**.................... | *.**.**.................... | *.**.**.................... | *.**.**.................... | *.**.**.................... |
20250828 10:58:05 [INFO]    | ........................... | ........................... | ........................... | ........................... | ........................... | ........................... |
20250828 10:58:05 [INFO]    | *.**.**.................... | *.**.**.................... | *.**.**.................... | *.**.**.................... | *.**.**.................... | *.**.***................... |
20250828 10:58:05 [INFO]    | *.**.**.................... | *.**.*.*................... | *.**.*.*................... | *.**.*.*................... | *.**.*.**..*............... | *.**.*.*..***.............. |
20250828 10:58:05 [INFO]    | .......*................... | .....*.*................... | .....*.*..**............... | .....*.**.***.............. | ..........***.............. | ....*....**.**............. |
20250828 10:58:05 [INFO]    | *.**.*.*...*............... | *.***..*.****.............. | *.****.*...**.............. | *.**...**.*..*............. | *.**......*..**....*....... | *.**...*.**...*...***...... |
20250828 10:58:05 [INFO]    | *.*..*.****.**............. | *.*..*.****..*............. | *.*..***....**.....*....... | *.*....*.....**...***...... | *.*...***...***...***...... | *.*...**....*.*...*..*..... |
20250828 10:58:05 [INFO]    | ....*.*.....**.....*....... | ..*.*.........*...***...... | ..*.*......*..**..***...... | ..*.*.*....*..*..*..*...... | ..*..*..............**..... | ..*..*......*.*...*..*..... |
20250828 10:58:05 [INFO]    | *.**..**.**.*.*...***...... | *.**.....**.*.**.*..*...... | *.*.*....*..*....**.*...... | *.*.*.....*...*****.*...... | *.*.*.*......*....*.*...... | *.*.*.*...........*...*.... |
20250828 10:58:05 [INFO]    | *.*...***..*..**.**..*..... | *.*..*...***.****....**.... | *.*.*.*....***..*....**.... | *.*..*.*......***...***.... | *.*.**..*.*..*....***.**... | *.*.*....*..**....*...**... |
20250828 10:58:05 [INFO]    | ..*..*.*.........***.**.... | ..*..*.**..............*... | ..*....********.*....*.*... | ..*.*...***...*.**...*.**.. | ..*.*.....*..**.**..**..*.. | ..*....*.*..**.****.****... |
20250828 10:58:05 [INFO]    | *.*.*.......*....***.***... | *.*.***.....*...*....*.*... | *.*.****....*.*.*......**.. | *.*..***.**...*........**.. | *.*.****.....*.*........... | *.*.*..*******.**....*..... |
20250828 10:58:05 [INFO]    | *.*..*..*...***.*.*........ | *.*.........*****....*.*... | *.*.........*..........*... | *.*.*..*...**..........*... | *.*..*.**.**..........*.... | *.*.**.**..**..........*... |
20250828 10:58:05 [INFO]    | ..*....*.......*..***..*... | ..*.***......*.****.***.... | ..*.*.*.....*....*.*....*.. | ..*....................**.. | ..*.........*..........**.. | ..*...**.*...*........**... |
20250828 10:58:05 [INFO]    | *.*.**.........*....**.*... | *.*.***.......**....**.**.. | *.*..............*.*....*.. | *.*..*.......*..*..*....... | *.**..*...****.*...*..*.... | *.*.***....***.*..**..*.... |
20250828 10:58:05 [INFO]    | *.*.**........*........*... | *.*.**.......***.....*.**.. | *.*...*...****.*....**..... | *.*..*.*.****.*.*..***.**.. | *.*.**.*......**..**..***.. | *.*.*...*..*....****..**... |
20250828 10:58:05 [INFO]    | ..*.......*..**.......**... | ..*.*....****.........**... | ..*.*.*.**.....*....*..**.. | ..*.*.*.****.*.....*...**.. | ..*.*.***....**.*.*........ | ..*.*...*....**.*......*... |
20250828 10:58:05 [INFO]    | *.*.*.*.*.**.**.*..*.*..... | *.*..*.*.***.**.....**..... | *.*.**.*.....*......**.*... | *.*.*..........**..***.*... | *.*.*..*....*...*.**....... | *.*.*.......*.*.....*...... |
20250828 10:58:05 [INFO]    | *.*.*..*...*....*..*..**... | *.*.*.**..**....*..*.*.*... | *.*.*..***....**.*.*...*... | *.*.*..*.***..***..*...**.. | *.*.*.**.*.*..*...**.*..... | *.*.*.***...**.**..**...... |
20250828 10:58:05 [INFO]    | ..*.**......***.*.**..**... | ..*.**.....***..*.*..***... | ..*.*..*..****..*...**.*... | ..*.*.**.***....**..*..**.. | ..*.*.*......*..**....*.... | ..*.*.**..*..*..*...*...... |
20250828 10:58:05 [INFO]    | *.*.*...*...*...*..**...... | *.*.*..*......*.*.....*.... | *.*.*.*....*.**.*......*... | *.*.*.*.*.**.**........*... | *.*.*......*.**.**...****.. | *.*.*..*......***.*.....*.. |
20250828 10:58:05 [INFO]    | *.*.*.*.*..**..**..***..... | *.*.*..*...*...**....*..... | *.*.**.**......***..***.... | *.*.*.***....*...*..*.*.... | *.*.*.*.**..**....*.*.**... | *.*.*..*....*.....**....*.. |
20250828 10:58:05 [INFO]    | ..*.*.......**......*...... | ..*.*...*..*.....*..**..... | ..*.*...*.....*..*..**..... | ..*.*.........*...***.*.... | ..*.*.*.......***.*...*.... | ..*.*.*.*...***.*.*...**... |
20250828 10:58:05 [INFO]    | *.*.*..**....****.*........ | *.*.*.*.*.....***.*........ | *.*.*...**.....**.*........ | *.*.*..**..*...**.*.**..... | *.*.**.*...*...**.*..*..... | *.*.*..*......*...*.**..... |
20250828 10:58:05 [INFO]    | *.*.*.***...*...*.**....*.. | *.*.*.*..*..*...*.*.****... | *.*.*.*..****...*.*.*..*... | *.*.*..*****....*..*....... | *.*.*.*.....*...**.**...... |                             |
20250828 10:58:05 [INFO]    | ..*.*.*.*...*.**..*.****... | ..*.*.*.**.**.**..*.****... | ..*.*.*........*........*.. |                             |                             |                             |
20250828 10:58:05 [INFO]    | *.*.*...*..*..*...*........ |                             |                             |                             |                             |                             |
20250828 10:58:05 [INFO] Total of 1 slices.
20250828 10:58:05 [INFO] Saved to "2.slice".
$ rlife slices-tool to-rc-input 3c6-f2b 2.slice 2.in
20250828 10:58:24 [INFO] Just one slice, building special format.
20250828 10:58:24 [INFO] Saved to "2.in".
$ cat 2.in
|                                 |                                 |                                 |                                 |                                 | ABCABuuuuuuuuuuuuuuuuuuuuuuuDDD |
|                                 |                                 |                                 | ABCABuuuuuuuuuuuuuuuuuuuuuuuDDD | *.**.**.**..................... | *.**.**.**..................... |
|                                 | ABCABuuuuuuuuuuuuuuuuuuuuuuuDDD | ............................... | ............................... | ............................... | ............................... |
| *.**.**.**..................... | *.**.**.**..................... | *.**.**.**..................... | *.**.**.**..................... | *.**.**.**..................... | *.**.**.**..................... |
| *.**.**.**..................... | *.**.**.**..................... | *.**.**.**..................... | *.**.**.**..................... | *.**.**.**..................... | *.**.**.**..................... |
| ............................... | ............................... | ............................... | ............................... | ............................... | ............................... |
| *.**.**.**..................... | *.**.**.**..................... | *.**.**.**..................... | *.**.**.**..................... | *.**.**.**..................... | *.**.**.**..................... |
| *.**.**.**..................... | *.**.**.**..................... | *.**.**.**..................... | *.**.**.**..................... | *.**.**.**..................... | *.**.**.**..................... |
| ............................... | ............................... | ............................... | ............................... | ............................... | ............................... |
| *.**.**.**..................... | *.**.**.**..................... | *.**.**.**..................... | *.**.**.**..................... | *.**.**.**..................... | *.**.**.***.................... |
| *.**.**.**..................... | *.**.**.*.*.................... | *.**.**.*.*.................... | *.**.**.*.*.................... | *.**.**.*.**..*................ | *.**.**.*.*..***............... |
| ..........*.................... | ........*.*.................... | ........*.*..**................ | ........*.**.***............... | .............***............... | .......*....**.**.............. |
| *.**.**.*.*...*................ | *.**.***..*.****............... | *.**.****.*...**............... | *.**.**...**.*..*.............. | *.**.**......*..**....*........ | *.**.**...*.**...*...***....... |
| *.**.*..*.****.**.............. | *.**.*..*.****..*.............. | *.**.*..***....**.....*........ | *.**.*....*.....**...***....... | *.**.*...***...***...***....... | *.**.*...**....*.*...*..*...... |
| .......*.*.....**.....*........ | .....*.*.........*...***....... | .....*.*......*..**..***....... | .....*.*.*....*..*..*..*....... | .....*..*..............**...... | .....*..*......*.*...*..*...... |
| *.**.**..**.**.*.*...***....... | *.**.**.....**.*.**.*..*....... | *.**.*.*....*..*....**.*....... | *.**.*.*.....*...*****.*....... | *.**.*.*.*......*....*.*....... | *.**.*.*.*...........*...*..... |
| *.**.*...***..*..**.**..*...... | *.**.*..*...***.****....**..... | *.**.*.*.*....***..*....**..... | *.**.*..*.*......***...***..... | *.**.*.**..*.*..*....***.**.... | *.**.*.*....*..**....*...**.... |
| .....*..*.*.........***.**..... | .....*..*.**..............*.... | .....*....********.*....*.*.... | .....*.*...***...*.**...*.**... | .....*.*.....*..**.**..**..*... | .....*....*.*..**.****.****.... |
| *.**.*.*.......*....***.***.... | *.**.*.***.....*...*....*.*.... | *.**.*.****....*.*.*......**... | *.**.*..***.**...*........**... | *.**.*.****.....*.*............ | *.**.*.*..*******.**....*...... |
| *.**.*..*..*...***.*.*......... | *.**.*.........*****....*.*.... | *.**.*.........*..........*.... | *.**.*.*..*...**..........*.... | *.**.*..*.**.**..........*..... | *.**.*.**.**..**..........*.... |
| .....*....*.......*..***..*.... | .....*.***......*.****.***..... | .....*.*.*.....*....*.*....*... | .....*....................**... | .....*.........*..........**... | .....*...**.*...*........**.... |
| *.**.*.**.........*....**.*.... | *.**.*.***.......**....**.**... | *.**.*..............*.*....*... | *.**.*..*.......*..*..*........ | *.**.**..*...****.*...*..*..... | *.**.*.***....***.*..**..*..... |
| *.**.*.**........*........*.... | *.**.*.**.......***.....*.**... | *.**.*...*...****.*....**...... | *.**.*..*.*.****.*.*..***.**... | *.**.*.**.*......**..**..***... | *.**.*.*...*..*....****..**.... |
| .....*.......*..**.......**.... | .....*.*....****.........**.... | .....*.*.*.**.....*....*..**... | .....*.*.*.****.*.....*...**... | .....*.*.***....**.*.*......... | .....*.*...*....**.*......*.... |
| *.**.*.*.*.*.**.**.*..*.*...... | *.**.*..*.*.***.**.....**...... | *.**.*.**.*.....*......**.*.... | *.**.*.*..........**..***.*.... | *.**.*.*..*....*...*.**........ | *.**.*.*.......*.*.....*....... |
| *.**.*.*..*...*....*..*..**.... | *.**.*.*.**..**....*..*.*.*.... | *.**.*.*..***....**.*.*...*.... | *.**.*.*..*.***..***..*...**... | *.**.*.*.**.*.*..*...**.*...... | *.**.*.*.***...**.**..**....... |
| .....*.**......***.*.**..**.... | .....*.**.....***..*.*..***.... | .....*.*..*..****..*...**.*.... | .....*.*.**.***....**..*..**... | .....*.*.*......*..**....*..... | .....*.*.**..*..*..*...*....... |
| *.**.*.*...*...*...*..**....... | *.**.*.*..*......*.*.....*..... | *.**.*.*.*....*.**.*......*.... | *.**.*.*.*.*.**.**........*.... | *.**.*.*......*.**.**...****... | *.**.*.*..*......***.*.....*... |
| *.**.*.*.*.*..**..**..***...... | *.**.*.*..*...*...**....*...... | *.**.*.**.**......***..***..... | *.**.*.*.***....*...*..*.*..... | *.**.*.*.*.**..**....*.*.**.... | *.**.*.*..*....*.....**....*... |
| .....*.*.......**......*....... | .....*.*...*..*.....*..**...... | .....*.*...*.....*..*..**...... | .....*.*.........*...***.*..... | .....*.*.*.......***.*...*..... | .....*.*.*.*...***.*.*...**.... |
| *.**.*.*..**....****.*......... | *.**.*.*.*.*.....***.*......... | *.**.*.*...**.....**.*......... | *.**.*.*..**..*...**.*.**...... | *.**.*.**.*...*...**.*..*...... | *.**.*.*..*......*...*.**...... |
| *.**.*.*.***...*...*.**....*... | *.**.*.*.*..*..*...*.*.****.... | *.**.*.*.*..****...*.*.*..*.... | *.**.*.*..*****....*..*........ | *.**.*.*.*.....*...**.**....... |                                 |
| .....*.*.*.*...*.**..*.****.... | .....*.*.*.**.**.**..*.****.... | .....*.*.*........*........*... |                                 |                                 |                                 |
| *.**.*.*...*..*..*...*......... |                                 |                                 |                                 |                                 |                                 |
$
You can see in the input files that due to the more complicated left agar it's chosen roots "ABCABuu...uuDDD". It should generally do the right thing and put one full cycle with uniquely-chosen roots on each side.

Finally, consider trying to find a greyship edge part at c/2 starting from the common diagonal edge:

Code: Select all

$ cat 3.l
*.*.*.*.*.*.*.*.*.*.*.*.*.......................................................
*.*.*.*.*.*.*.*.*.*.*.*.**......................................................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.....................................................
*.*.*.*.*.*.*.*.*.*.*.*.*.**....................................................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*...................................................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.**..................................................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.................................................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**................................................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*...............................................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**..............................................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.............................................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**............................................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*...........................................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**..........................................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.........................................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**........................................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.......................................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**......................................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.....................................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**....................................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*...................................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**..................................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.................................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**................................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*...............................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**..............................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.............................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**............................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*...........................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**..........................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.........................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**........................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.......................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**......................
$ rlife slices-tool ingest-1gp --left-agar vertical-stripes c2-f2b --w-cuts ALL --w-size 5 3.l 3.slices
...
20250828 11:00:58 [INFO] New aligned slice:
20250828 11:00:58 [INFO]    |         | LLuuuRR |
20250828 11:00:58 [INFO]    | .**.... | .*..... |
20250828 11:00:58 [INFO]    | .*.*... | .*.**.. |
20250828 11:00:58 [INFO]    | .*.**.. |         |
...
20250828 11:00:58 [INFO] New aligned slice:
20250828 11:00:58 [INFO]    |         | LLuuuRR |
20250828 11:00:58 [INFO]    | .**.... | .**.... |
20250828 11:00:58 [INFO]    | .*..... | .*.*... |
20250828 11:00:58 [INFO]    | .*.**.. |         |
...
20250828 11:00:58 [INFO] New aligned slice:
20250828 11:00:58 [INFO]    |        | LLuuRR |
20250828 11:00:58 [INFO]    | .*.... | .**... |
20250828 11:00:58 [INFO]    | .**... | .*.... |
20250828 11:00:58 [INFO]    | .*.*.. |        |
...
20250828 11:00:58 [INFO] New aligned slice:
20250828 11:00:58 [INFO]    |        | LLuuRR |
20250828 11:00:58 [INFO]    | *..... | *.*... |
20250828 11:00:58 [INFO]    | *.**.. | *.**.. |
20250828 11:00:58 [INFO]    | *.*... |        |
...
20250828 11:00:58 [INFO] Total of 4 slices.
20250828 11:00:58 [INFO] Saved to "3.slices".
$ rlife slices-tool to-rc-input c2-f2b 3.slices 3.in
20250828 11:01:24 [INFO] Saved to "3.in".
$ cat 3.in
|                                        | ABAB!ABuuCC!ABuuuCC!ABuuuCC!BAuuCC!CCC |
| .*.*!.*....!.**....!.**....!*.....!... | .*.*!.**...!.*.....!.**....!*.*...!... |
| .*.*!.**...!.*.*...!.*.....!*.**..!... | .*.*!.*....!.*.**..!.*.*...!*.**..!... |
| .*.*!.*.*..!.*.**..!.*.**..!*.*...!... |                                        |
$
Because there are multiple slices it has to smash them all together in one picture, but as long as they're still in the "same W place" in both agars it's fine.

There is of course still much left to do/decide...

(*) Something something maximum area clean rectangle algorithm. My extremely simple first cut is O(W^2 * H), which should hopefully suffice for now, but it seems like a problem waiting to happen. Unfortunately I'm gonna have to get through some terrifying papers from the 1980's if I want to beat that and I'm not sure I'm up to it.

(*) Something something slice collection management. Print details, merge collections, compute stats, etc.

(*) What about slice collections that are not in the "same W place"? I know what to do in terms of the desired in-memory state, but the current grid format is not expressive enough to do it (can't have multiple left/right edges) and so to-rc-input just panics.

(*) Probably I should make a "@slices" magic grid for recentering. This can almost certainly solve the problem of "different W places" by producing multiple grids of the various parts and everything will all chimerize together correctly. It can also do some special hacking to make the edges leaner. E.g. with that "ABAB" example above it's not possible for a partial to start from "BA". Due to agars being considered inert it's not so big a deal, but it's something the @slices magic grid would be able to fix. It could also do some other special hacking to make all the left roots render as "L" and all the right roots render as "R" (but tag them with hidden data to make them appropriately unique behind the scenes).

(*) How exactly to best clean this up for use by others and especially how much of it to promote to be considered recommended best practice. E.g. I'm a little nervous about a potential @slices magic grid hiding the existence and structure of the grid and its roots. It seems like it will be somewhat antagonistic to building understanding, but perhaps no one but me will be making explicit recentering input grids ever again?

(*) EDBV4, especially for greyship edges! A collection of W overlap + 1 height slices ("transitions") plus a collection of W overlap height slices ("bottoms") they all trace forward to defines an obvious DB format and should be able to be used as an --ends for LLSSS searches. A known repeating seam between two agars could be ingested as both the transitions and bottoms to define a foundation for such an ends DB. Then it should be pretty straight-forward to ingest partials that connect the seam to itself, merge such slice collections into a DB (as long as they are well-founded, i.e. trace forward to existing slices), etc.

I've pushed the version of the code used above to codeberg as 20250828-slices-13 for now if anyone wants to take it for a ride.
Last edited by amling on August 30th, 2025, 12:03 am, edited 1 time in total.

Sokwe
Moderator
Posts: 3367
Joined: July 9th, 2009, 2:44 pm

Re: amling search program principles discussion / brain dump

Post by Sokwe » August 28th, 2025, 7:32 pm

amling wrote:
August 28th, 2025, 2:47 pm
Something something one generation partials.... I had been thinking about automating the later steps of the workflow that begins with dumping multiple generations out of golly, PD 2-folding them, picking some cut-off above the mismatches, etc....

I decided that picking a maximum area UW rectangle of tiles that have no disagreements is probably good enough and is also probably feasible computationally.
Am I to understand that this would allow a much simpler process of creating start files from partial results than the one described here? I've been reluctant to start writing the "extending partial results" section of the tutorial due to the complexity of the setup process.
amling wrote:
August 28th, 2025, 2:47 pm
How exactly to best clean this up for use by others and especially how much of it to promote to be considered recommended best practice. E.g. I'm a little nervous about a potential @slices magic grid hiding the existence and structure of the grid and its roots. It seems like it will be somewhat antagonistic to building understanding, but perhaps no one but me will be making explicit recentering input grids ever again?
In my opinion, usability is actually important to building understanding. There's less incentive to dig into the details of how something works if just getting it to work is too difficult. LLSSS has seen a significant increase in users since you added the magic grids that made basic search setups easy.

Edit: I suppose there's a limit to this. Once something just works and there's no connection to the deeper structure, then even advanced users will simply stop thinking about it. I'm not sure what a good middle ground is in this case, largely because I don't fully understand things myself.
-Matthias Merzenich

amling
Posts: 1154
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling » August 28th, 2025, 7:59 pm

Sokwe wrote:
August 28th, 2025, 7:32 pm
Am I to understand that this would allow a much simpler process of creating start files from partial results than the one described here? I've been reluctant to start writing the "extending partial results" section of the tutorial due to the complexity of the setup process.
Well, not really simpler, at least in the sense that it is exactly that process, it's just that it's much more automated. But yes, simpler from a user perspective hopefully in that the computer does more (really almost all) of it and hopefully it just works.
Sokwe wrote:
August 28th, 2025, 7:32 pm
In my opinion, usability is actually important to building understanding. There's less incentive to dig into the details of how something works if just getting it to work is too difficult. LLSSS has seen a significant increase in users since you added the magic grids that made basic search setups easy.

Edit: I suppose there's a limit to this. Once something just works and there's no connection to the deeper structure, then even advanced users will simply stop thinking about it. I'm not sure what a good middle ground is in this case, largely because I don't fully understand things myself.
That disconnect is sort of what I was worried about, but again, this may be a silly worry and I'm guessing 100% of recentering searches that have been run by anyone but me were (or should/could have been) from slices. I guess I'll let the guy brave enough to maintain a public-facing tutorial sort out what we should be suggesting people to do.

I've added "slices-tool print" and "@slices:..." magic grid, both of whose usage should be pretty straight-forward:

Code: Select all

$ cat 1.l
............................
............................
............................
...**.**....*...............
..****...*.*................
...**.*.....*...............
.....*.**.*.................
..***.*.....................
...*..**....................
.........*.**...............
......*......*..............
.........**.*.*.*...*.......
.............**.**.*........
.........*...*...*..........
.........*..***...**........
.......*.***.**...**........
..........*..***............
..........***...............
..........***..*..*.........
.............**.**..........
.........***.**.**.*........
............*.*...*.........
...........*....*.....*.....
...........*.***...*........
$ rlife slices-tool ingest-1gp --rule 'B25/S24' c3k-1 1.l 1.slice
...
20250828 16:54:50 [INFO] Total of 1 slices.
20250828 16:54:50 [INFO] Saved to "1.slice".
$ rlife slices-tool print c3k-1 1.slice
20250828 16:55:20 [INFO] Loaded 1 slices.
20250828 16:55:20 [INFO] Slice #0:
20250828 16:55:20 [INFO]    |                  |                  | LLuuuuuuuuuuuuRR |
20250828 16:55:20 [INFO]    | LLuuuuuuuuuuuuRR | LLuuuuuuuuuuuuRR | ...*.**...*..... |
20250828 16:55:20 [INFO]    | ..***.**.**.*... | ...**..**.*..... | ...**.*..*.*.*.. |
20250828 16:55:20 [INFO]    | .....*.*...*.... | ..*....*...**... |                  |
$ rlife llsss-recentering --rule 'B25/S24' c3k-1 '@slices:1.slice' 16
...
20250828 16:55:38 [INFO] Shortest partial:
20250828 16:55:38 [INFO] |                      |                      | LLuuuuuuuuuuuuRRRRRR |
20250828 16:55:38 [INFO] | LLuuuuuuuuuuuuRRRRRR | LLuuuuuuuuuuuuRRRRRR | ...*.**...*......... |
20250828 16:55:38 [INFO] | ..***.**.**.*....... | ...**..**.*......... | ...**.*..*.*.*...... |
20250828 16:55:38 [INFO] | .....*.*...*........ | ..*....*...**....... | ..**.***.....*...... |
20250828 16:55:38 [INFO] | ....*....*.....*.... | ...**.....***....... | ...*.*...**....*.... |
20250828 16:55:38 [INFO] | ....*.***...*....... | ...**.....**.***.... | ...*..*.*.....*..... |
20250828 16:55:38 [INFO] | .....*.*..*...*..... | ...*.*.*.*.*.*.**... | ...*.***.*.....*.... |
20250828 16:55:38 [INFO] | ....**.*.......*.*.. | ...*****..***..*.... | ...*.*.*.**.**.*.*.. |
20250828 16:55:38 [INFO] | ....**..**..**..*... |                      |                      |
...
The code used to generate the above has been pushed to codeberg as 20250828-slices-17. Unless we think of some serious changes this will likely be promoted to master soon.

Sokwe
Moderator
Posts: 3367
Joined: July 9th, 2009, 2:44 pm

Re: amling search program principles discussion / brain dump

Post by Sokwe » August 28th, 2025, 8:28 pm

amling wrote:
August 28th, 2025, 7:59 pm
yes, simpler from a user perspective hopefully in that the computer does more (really almost all) of it and hopefully it just works.
Excellent! This is a feature I've been hoping to see. Extending a partial result wasn't really a difficult task if you understood the process, but it was a bit tedious. This will also substantially simplify writing the tutorial.
amling wrote:
August 28th, 2025, 7:59 pm
Unless we think of some serious changes this will likely be promoted to master soon.
The only other suggestion I have at the moment would be the ability to input a partial result as an RLE (such as those obtained when you copy a pattern from Golly), rather than a grid. This would avoid the need of having to use a separate script to produce the grid.
-Matthias Merzenich

amling
Posts: 1154
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling » August 29th, 2025, 3:39 pm

Sokwe wrote:
August 28th, 2025, 8:28 pm
The only other suggestion I have at the moment would be the ability to input a partial result as an RLE (such as those obtained when you copy a pattern from Golly), rather than a grid. This would avoid the need of having to use a separate script to produce the grid.
It did do that, although I only used it once in the examples (and didn't actually cat the RLE file so it's easy to miss in the transcript). My quick, slipshod parser only loads the cells themselves (not the sizes or the rule) which may not be obvious. Unfortunately trying to route that sort of information out of the cell loading code to combine with argument parsing is not something I'm particularly excited about (and we're not gonna keep the rule in the slices file so you're gonna have to specify it again when searching anyway).
amling wrote:
August 28th, 2025, 7:59 pm
Unless we think of some serious changes this will likely be promoted to master soon.
I've just pushed it, pretty much as it was. I'm still chewing on the ideas for a potential EDBV4. The biggest problem I think is going to be performance. Originally EDBV3 converted the collection of slices it had to an NFA and used the NFA to DFA compiler I wrote on that. Unfortunately despite my best efforts that compiler did not perform particularly great on giant, giant ends DBs and so in the end I personally statically analyzed the structure of the sort of NFAs it was building very carefully and convinced myself I could build (something like) the resulting DFA directly. However, with arbitrary agars and their various horrible edge cases I'm not convinced I can do the same analysis. Perhaps I will go another round with optimizing the NFA compiler or perhaps EDBV3 will just live forever to deal with the giant ends DBs built from knightt-results.

Of course if you (anyone) use it and have a little time to report back I would love to know how it goes. I would not consider anything about it (or its slices file format) set in stone.

User avatar
Sylvani
Posts: 146
Joined: September 26th, 2024, 3:23 am

Re: amling search program principles discussion / brain dump

Post by Sylvani » August 31st, 2025, 2:42 pm

Is there a way to piece together each end from the output of LLSSS and show every possible solution and a number of ends to piece together?

amling
Posts: 1154
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling » August 31st, 2025, 9:54 pm

Sylvani wrote:
August 31st, 2025, 2:42 pm
Is there a way to piece together each end from the output of LLSSS and show every possible solution and a number of ends to piece together?
I have no idea what you're asking. Can you give some example output you'd rather be different and try to explain what you mean relative to it?

It's possible you're trying to ask about changing the common recentering ends output (where it includes a "thinnest" and the a bunch of "piece"s that make the complete solution space). There was a great deal of philosophizing about this up thread when recentering first shipped. The main problem is there can be cycles and thereby an infinite collection of possible results (and in fact in typical searches there are always cycles at the edges). Computers can of course do any behavior we can specify clearly and universally (and unfortunately nothing else), but I'm not really sure what we'd do instead. Show the ten thinnest possible recombinations? Show all combinations up to twice the width of the thinnest? Try to do some heuristic to understand when the "only cycles" are the two edge agars and show some sense of all recombinations of the other parts? I gave up on this question up thread because it was not pressing and dumping all the pieces seemed good enough.

User avatar
Sylvani
Posts: 146
Joined: September 26th, 2024, 3:23 am

Re: amling search program principles discussion / brain dump

Post by Sylvani » August 31st, 2025, 10:15 pm

amling wrote:
August 31st, 2025, 9:54 pm
Sylvani wrote:
August 31st, 2025, 2:42 pm
Is there a way to piece together each end from the output of LLSSS and show every possible solution and a number of ends to piece together?
I have no idea what you're asking. Can you give some example output you'd rather be different and try to explain what you mean relative to it?

It's possible you're trying to ask about changing the common recentering ends output (where it includes a "thinnest" and the a bunch of "piece"s that make the complete solution space). There was a great deal of philosophizing about this up thread when recentering first shipped. The main problem is there can be cycles and thereby an infinite collection of possible results (and in fact in typical searches there are always cycles at the edges). Computers can of course do any behavior we can specify clearly and universally (and unfortunately nothing else), but I'm not really sure what we'd do instead. Show the ten thinnest possible recombinations? Show all combinations up to twice the width of the thinnest? Try to do some heuristic to understand when the "only cycles" are the two edge agars and show some sense of all recombinations of the other parts? I gave up on this question up thread because it was not pressing and dumping all the pieces seemed good enough.
I am sorry, I should have been more clear.
Your assumption about me referring to the "thinnest" and "pieces" is correct. What I was thinking of is having a depth (amount of pieces) or width limit to prevent infinite cycles. This might need a lot of modification of the source code, but it should be possible to dump all the results to a file. If this is ever done (which I doubt it will be), I might write a script to merge the results into a jslife-styled showcase as one big RLE. I could also use just stdout manipulation if outputting gets way too out of hand.

amling
Posts: 1154
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling » September 1st, 2025, 2:02 am

amling wrote:
August 31st, 2025, 9:54 pm
Try to do some heuristic to understand when the "only cycles" are the two edge agars and show some sense of all recombinations of the other parts?
One possible idea for this is to identify the nontrivial strongly connected components (i.e. those that are not just a single vertex without even a self-loop edge) of the graph of left-to-right traversals and output their contents how we do now (merging only unique neighbors), but then multiply out completely all paths between these nontrivial strongly connected components.

In typical results in typical searches you'd get one SCC of the left agar, one SCC of the right agar, and whatever finite and fully-expanded collection of paths between then. In searches that hit a cycle in the middle you'd get, well, something.

I'm perhaps not super excited to write this since it is a bunch of code and I'm not sure I'd benefit from it much personally. Like half my projects run with full recentering ends disabled anyway (via LLSSS_RC_ENDS_FULL=false) when any result, even just the "thinnest" one is a success for the search.

amling
Posts: 1154
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling » September 3rd, 2025, 3:11 pm

I've added --left-agar and --right-agar to try to make mixed agar searches less painful (no more writing out "--left-edge agar:XXX --left-inertness agar:XXX"). Not every possible combination of options makes sense, but hopefully all sane combinations should do the right thing (and the rest should panic).

I've also added a "slices" ends. As an example, let's find a simple little c/2 parallel stripes component. Let's start by ingesting the common diagonal edge as slices:

Code: Select all

$ cat 1.l
*.*.*.*.*.*.*.*.......................................
*.*.*.*.*.*.*.**......................................
*.*.*.*.*.*.*.*.*.....................................
*.*.*.*.*.*.*.*.**....................................
*.*.*.*.*.*.*.*.*.*...................................
*.*.*.*.*.*.*.*.*.**..................................
*.*.*.*.*.*.*.*.*.*.*.................................
*.*.*.*.*.*.*.*.*.*.**................................
*.*.*.*.*.*.*.*.*.*.*.*...............................
*.*.*.*.*.*.*.*.*.*.*.**..............................
*.*.*.*.*.*.*.*.*.*.*.*.*.............................
*.*.*.*.*.*.*.*.*.*.*.*.**............................
*.*.*.*.*.*.*.*.*.*.*.*.*.*...........................
*.*.*.*.*.*.*.*.*.*.*.*.*.**..........................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.........................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.**........................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.......................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**......................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.....................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**....................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*...................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**..................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.................
*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**................
$ rlife slices-tool ingest-1gp c2-f2b --left-agar vertical-stripes --w-cuts ALL 1.l 1.W4-slices
...
20250903 10:29:25 [INFO] Total of 4 slices.
20250903 10:29:25 [INFO] Saved to "1.W4-slices".
$ rlife slices-tool print c2-f2b 1.W4-slices
20250903 10:30:04 [INFO] Loaded 4 slices.
20250903 10:30:04 [INFO] Slice #0:
20250903 10:30:04 [INFO]    |       | LLuRR |
20250903 10:30:04 [INFO]    | .*... | .**.. |
20250903 10:30:04 [INFO]    | .**.. | .*... |
20250903 10:30:04 [INFO] Slice #1:
20250903 10:30:04 [INFO]    |         | LLuuuRR |
20250903 10:30:04 [INFO]    | .**.... | .*..... |
20250903 10:30:04 [INFO]    | .*.*... | .*.**.. |
20250903 10:30:04 [INFO] Slice #2:
20250903 10:30:04 [INFO]    |        | LLuuRR |
20250903 10:30:04 [INFO]    | .**... | .**... |
20250903 10:30:04 [INFO]    | .*.... | .*.*.. |
20250903 10:30:04 [INFO] Slice #3:
20250903 10:30:04 [INFO]    |        | LLuuRR |
20250903 10:30:04 [INFO]    | *..... | *.*... |
20250903 10:30:04 [INFO]    | *.**.. | *.**.. |
$ rlife slices-tool ingest-1gp c2-f2b --left-agar vertical-stripes --w-size 5 --w-cuts ALL 1.l 1.W5-slices
...
20250903 10:29:42 [INFO] Total of 4 slices.
20250903 10:29:42 [INFO] Saved to "1.W5-slices".
$ rlife slices-tool print c2-f2b 1.W5-slices
20250903 10:30:08 [INFO] Loaded 4 slices.
20250903 10:30:08 [INFO] Slice #0:
20250903 10:30:08 [INFO]    |        | LLuuRR |
20250903 10:30:08 [INFO]    | .*.... | .**... |
20250903 10:30:08 [INFO]    | .**... | .*.... |
20250903 10:30:08 [INFO]    | .*.*.. |        |
20250903 10:30:08 [INFO] Slice #1:
20250903 10:30:08 [INFO]    |         | LLuuuRR |
20250903 10:30:08 [INFO]    | .**.... | .*..... |
20250903 10:30:08 [INFO]    | .*.*... | .*.**.. |
20250903 10:30:08 [INFO]    | .*.**.. |         |
20250903 10:30:08 [INFO] Slice #2:
20250903 10:30:08 [INFO]    |         | LLuuuRR |
20250903 10:30:08 [INFO]    | .**.... | .**.... |
20250903 10:30:08 [INFO]    | .*..... | .*.*... |
20250903 10:30:08 [INFO]    | .*.**.. |         |
20250903 10:30:08 [INFO] Slice #3:
20250903 10:30:08 [INFO]    |        | LLuuRR |
20250903 10:30:08 [INFO]    | *..... | *.*... |
20250903 10:30:08 [INFO]    | *.**.. | *.**.. |
20250903 10:30:08 [INFO]    | *.*... |        |
Note I've ingested one copy at W size 5 to use for starting a WAO search and one copy at W size 4 to use for ends. You could use the W size 5 search for ends too, but it would take one W row longer to hit it. Now you could run a search like...

Code: Select all

$ rlife llsss-recentering-wao c2-f2b --left-agar vertical-stripes '@slices:1.W5-slices' --ends 'slices:1.W4-slices' --llsss-env LLSSS_HALT_ON_ENDS=true 10
...
20250903 11:19:41 [INFO] Start: compile step LlsssEndsSlices
20250903 11:19:41 [INFO] LlsssEndsSlices: 31 NFA states
20250903 11:19:41 [INFO] LlsssEndsSlices: 27 DFA states
20250903 11:19:41 [INFO] Finish: compile step LlsssEndsSlices -> took 1.392182ms (6.046ms user, 252µs sys)
...
20250903 11:19:41 [INFO] End [thinnest] ("LlsssEndsSlices", "1.W4-slices"):
20250903 11:19:41 [INFO] |          | LLuuRRRR |
20250903 11:19:41 [INFO] | *....... | *.*..... |
20250903 11:19:41 [INFO] | *.**.... | *.**.... |
20250903 11:19:41 [INFO] | *.*.*... | *.*.**.. |
20250903 11:19:41 [INFO] | *.*.**.. | *.*.*... |
...
...but this finds a very small known result. Looking at the WAO output the indices run 00-28 and a little poking around shows this result is from #27. If we remove just that one ("--wao-idx 0-26,28"), we get a slightly bigger result:

Code: Select all

$ rlife llsss-recentering-wao c2-f2b --left-agar vertical-stripes '@slices:1.W5-slices' --ends 'slices:1.W4-slices' --llsss-env LLSSS_HALT_ON_ENDS=true --wao-idx 0-26,28 10
...
20250903 11:20:35 [INFO] End [thinnest] ("LlsssEndsSlices", "1.W4-slices"):
20250903 11:20:35 [INFO] |               | LLLLuuRRRRRRR |
20250903 11:20:35 [INFO] | *.*.......... | *.*.*........ |
20250903 11:20:35 [INFO] | *.*.**....... | *.*.**....... |
20250903 11:20:35 [INFO] | *.*.**....... | *.*...*...... |
20250903 11:20:35 [INFO] | *..*.*....... | *............ |
20250903 11:20:35 [INFO] | *.**.**...... | *.**.**...... |
20250903 11:20:35 [INFO] | *............ | *............ |
20250903 11:20:35 [INFO] | *.***.***.... | *..*...***... |
20250903 11:20:35 [INFO] | *.......**... | *.*......*... |
20250903 11:20:35 [INFO] | *.*......*... | *.**......... |
20250903 11:20:35 [INFO] | *.**.....**.. | *.*......**.. |
20250903 11:20:35 [INFO] | *.*.*........ | *.*.**....... |
20250903 11:20:35 [INFO] | *.*.**....... | *.*.*........ |
...
This of course is also long-known, but hopefully this showcases how these tools should make searching for greyship edge components easier, at least when there is a known seam to work from.

Sokwe
Moderator
Posts: 3367
Joined: July 9th, 2009, 2:44 pm

Re: amling search program principles discussion / brain dump

Post by Sokwe » September 13th, 2025, 7:27 pm

amling wrote:
July 19th, 2024, 3:27 pm
I've just pushed `2345a0101a81` which includes:

(*) `--constraint statorless`....
Is there any way to prevent other cell frequencies? That is, could LLSSS be set up to search for a p3 oscillator where all cells are on for exactly two out of three generations? This question is motivated by this wiki page, which notes that no such p3 oscillators are known. Since you previously performed some searches for strictly volatile p4 oscillators, I assume that you have a bit more control over the constraints than just preventing p1 cells.
-Matthias Merzenich

amling
Posts: 1154
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling » September 13th, 2025, 11:51 pm

Sokwe wrote:
September 13th, 2025, 7:27 pm
amling wrote:
July 19th, 2024, 3:27 pm
I've just pushed `2345a0101a81` which includes:

(*) `--constraint statorless`....
Is there any way to prevent other cell frequencies? That is, could LLSSS be set up to search for a p3 oscillator where all cells are on for exactly two out of three generations?
That is well within the range of what a constraint can know when it must make its decision. Unfortunately deciding exactly what form of user input to take is a somewhat harder problem.

I've pushed a quick and dirty demo to codeberg as 20250913-p3-hack-01 to implement exactly this (require each cell to be on in zero or two generations). Even a debug build of this is quickly able to rule out such p3 oscillators almost instantly, at least assuming no bugs:

Code: Select all

$ rlife llsss-recentering-wao p3 '@bg' --constraint p3_hack XX
...
20250913 20:40:06 [INFO] Shortest partial:
20250913 20:40:06 [INFO] | ZZZZZZZZZZZZZ | ZZZZZZZZZZZZZ | ZZZZZZZZZZZZZ |
20250913 20:40:06 [INFO] | ............. | ............. | ............. |
20250913 20:40:06 [INFO] | ............. | ............. | ............. |
20250913 20:40:06 [INFO] | ......*...... | ............. | ......*...... |
20250913 20:40:06 [INFO] | ......*...... | .....***..... | .....*.*..... |
20250913 20:40:06 [INFO] | .....*.*..... | .....*.*..... | ............. |
20250913 20:40:06 [INFO] | ...*..*...... | ....******... | ...***.***... |
20250913 20:40:06 [INFO] | .....*..***.. | ..**......*.. |               |
...
20250913 20:40:06 [DEBUG] Completed w_pos 6[2]: 0 B [-200.00%], 36.656623ms [+7.45%]
20250913 20:40:06 [INFO] VmPeak: 654.99 MB
...
20250913 20:40:06 [INFO] Finish: search proper -> took 371.944454ms (1.344823s user, 154.02ms sys)
...
20250913 20:40:06 [INFO] Total: 530.946059ms (2.071787s user, 159.377ms sys)
20250913 20:40:06 [INFO] Done
The partial looks like the right sort of thing to me (all completed cohorts are zero or two gens on), but it would be nice to have a rule with an example oscillator to try to find.

As for how to allow users to specify such constraints, it could be as simple/specific as something like statorless, namely require geometry to be pN and take a list of allowed weights or it could be something as generic as take K, an integral divisor of V and a collection of legal on/off patterns of cohorts mod V/K, specified only up to cyclic shift. If you e.g. wanted to do strict volatility for p4 you'd need some of that latter flexibility, using K=4 and allowing only 0000, 0001, 0011, and 0111 (denying 1111 and 0101).

Either implementation is a little tricky to do efficiently because it may be possible to disallow a cell choice earlier than the end of a cohort, but analyzing the allowed cohort patterns to decide each case (prefix of a cohort plus extension bit) is annoying.

amling
Posts: 1154
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling » September 14th, 2025, 4:41 am

Sokwe wrote:
September 13th, 2025, 7:27 pm
Is there any way to prevent other cell frequencies? ... This question is motivated by this wiki page...
I sketched a fairly ugly osc_freq_hack on the same branch that can take flags indicating legal gen counts and constrain pN searches, although it only performs its checks on the last generation (rather than efficiently forbidding early where it might be able to). E.g. "--constraint osc_freq_hack:5" allows just zero and two (5 = 0b101 has bits zero and two on).

As for p4, let's see what we can do...

(*) "1 only" - verified no results as a quick test with "--constraint osc_freq_hack:3".

(*) "3 only", "1,3" - even a debug build can clear this pretty quickly (11 = 0b1011 allows zero, one, or three gens on and thus covers both):

Code: Select all

$ rlife llsss-recentering-wao p4 '@bg' --constraint osc_freq_hack:11 XX
...
20250914 00:17:01 [INFO] Shortest partial:
20250914 00:17:01 [INFO] | ZZZZZZZZZZZZZZZZZZZZZ | ZZZZZZZZZZZZZZZZZZZZZ | ZZZZZZZZZZZZZZZZZZZZZ | ZZZZZZZZZZZZZZZZZZZZZ |
20250914 00:17:01 [INFO] | ..................... | ..................... | ..................... | ..................... |
20250914 00:17:01 [INFO] | ..................... | ..................... | ..................... | ..................... |
20250914 00:17:01 [INFO] | ..........*.......... | ..................... | ..................... | ..................... |
20250914 00:17:01 [INFO] | ..........*.......... | ..................... | ..........*.......... | .........***......... |
20250914 00:17:01 [INFO] | .........***......... | .........***......... | .........***......... | ..................... |
20250914 00:17:01 [INFO] | ........*...*........ | ........*...*........ | .........***......... | ........*...*........ |
20250914 00:17:01 [INFO] | ......*..*.*..*...... | ..................... | .........*.*......... | .......*.*.*.*....... |
20250914 00:17:01 [INFO] | ..................... | ....*.****.****.*.... | ......***...***...... | ......***...***...... |
20250914 00:17:01 [INFO] | ...****.**.**.****... | ..*..**.......**..*.. | .....*.........*..... | ......**.....**...... |
20250914 00:17:01 [INFO] | ..***..*******..***.. | .......*.....*....... | ..................... |                       |
...
20250914 00:17:02 [DEBUG] Completed w_pos 9[3]: 0 B [-200.00%], 1.556779978s [-27.22%]
20250914 00:17:02 [INFO] VmPeak: 710.98 MB
...
20250914 00:17:02 [INFO] Finish: search proper -> took 27.456909751s (102.727977s user, 1.130404s sys)
...
20250914 00:17:02 [INFO] Total: 27.657444093s (103.542192s user, 1.136607s sys)
20250914 00:17:02 [INFO] Done
(*) "1,2", "2 only", and "2,3" - unfortunately these all include p2 phoenix oscillators and as usual a "p4" search completely includes p2. A more careful input file and constraint can start the search at a row with the first fully-p4 cell. This does allow starting p2 slices that have no northward solution but for a negative result should be exhaustive.

Code: Select all

$ cat x1.in
| LLLLLuRRRRR | LLLLLuRRRRR | LLLLLuRRRRR | LLLLLuRRRRR |
| ..2222222.. | ..2222222.. | ..2222222.. | ..2222222.. |
| ..2222222.. | ..2222222.. | ..2222222.. | ..2222222.. |
$ cat x1.cstr
| LLLLLuRRRRR | LLLLLuRRRRR | LLLLLuRRRRR | LLLLLuRRRRR |
| 22222222222 | 22222222222 | 22222222222 | 22222222222 |
| 22222222222 | 22222222222 | 22222222222 | 22222222222 |
| 22222*WWWWW | 22222WWWWWW | 22222.WWWWW | 22222WWWWWW |
$
My release build finished by this point and makes reasonably quick work of "2 only":

Code: Select all

$ rlife llsss-recentering p4 x1.in --constraint grid:x1.cstr:none,osc_freq_hack:5 XX
...
20250914 00:37:03 [INFO] Shortest partial:
20250914 00:37:03 [INFO] | LLLuRRRRRR | LLLuRRRRRR | LLLuRRRRRR | LLLuRRRRRR |
20250914 00:37:03 [INFO] | .......... | ....***... | .......... | ....***... |
20250914 00:37:03 [INFO] | ...*..*... | .......... | ...*..*... | .......... |
20250914 00:37:03 [INFO] | ...*...... | ..**.*.... | ....*..... | ..*.**.... |
20250914 00:37:03 [INFO] | ...***.... | .....*.... | ..***..... | ..*....... |
20250914 00:37:03 [INFO] | ..***..... | ..*....... | ...***.... | .....*.... |
20250914 00:37:03 [INFO] | ....*..... | ..*.**.... | ...*...... | ..**.*.... |
20250914 00:37:03 [INFO] | ...*..*... | .......... | ...*..*... | .......... |
20250914 00:37:03 [INFO] | .......*.. | ....**.*.. | ......*... | ....***... |
20250914 00:37:03 [INFO] | ....**.*.. | .......*.. | ...*.*.... |            |
...
20250914 00:37:08 [DEBUG] Completed w_pos 8[3]: 0 B [-200.00%], 5.937656771s [+81.86%]
20250914 00:37:08 [INFO] VmPeak: 3.18 GB
...
20250914 00:37:08 [INFO] Finish: search proper -> took 25.128762917s (169.708479s user, 8.011075s sys)
...
20250914 00:37:08 [INFO] Total: 25.303494565s (170.998774s user, 8.016789s sys)
20250914 00:37:08 [INFO] Done
Neither "1,2" nor "2,3" completed in 60GB:

Code: Select all

$ rlife llsss-recentering p4 x1.in --constraint grid:x1.cstr:none,osc_freq_hack:7 XX
...
20250914 01:07:46 [DEBUG] Completed w_pos 7[2]: 30.44 GB [+116.84%], 254.938451084s [+124.48%]
...
20250914 01:08:09 [INFO] Shortest partial:
20250914 01:08:09 [INFO] | LLLuRRRRR | LLLuRRRRR | LLLuRRRRR | LLLuRRRRR |
20250914 01:08:09 [INFO] | ......... | ....***.. | ......... | ....***.. |
20250914 01:08:09 [INFO] | ...*..*.. | ......... | ...*..*.. | ......... |
20250914 01:08:09 [INFO] | ...*..... | ..**.*... | ....*.... | ..*.**... |
20250914 01:08:09 [INFO] | ...***... | .....*... | ..***.... | ..*...... |
20250914 01:08:09 [INFO] | ..***.... | ..*...... | ...***... | .....*... |
20250914 01:08:09 [INFO] | ....*.... | ..*.**... | ...*..... | ..**.*... |
20250914 01:08:09 [INFO] | ...*..*.. | ......... | ...*..*.. | ......... |
20250914 01:08:09 [INFO] | ......... | ....***.. | ......... |           |
...
(OOM)

Code: Select all

$ rlife llsss-recentering p4 x1.in --constraint grid:x1.cstr:none,osc_freq_hack:13 XX
...
20250914 00:50:08 [DEBUG] Completed w_pos 9[1]: 20.38 GB [+97.86%], 173.456056107s [+96.18%]
...
20250914 00:50:26 [INFO] Shortest partial:
20250914 00:50:26 [INFO] | LLLLuRRRRR | LLLLuRRRRR | LLLLuRRRRR | LLLLuRRRRR |
20250914 00:50:26 [INFO] | .......... | .......... | .......... | .......... |
20250914 00:50:26 [INFO] | .......... | .......... | .......... | .......... |
20250914 00:50:26 [INFO] | ....*..... | .....*.... | .....*.... | ....*..... |
20250914 00:50:26 [INFO] | ....*.*... | ...***.... | ...*.*.... | ....***... |
20250914 00:50:26 [INFO] | ...*...*.. | ...*..**.. | ..*...*... | ..**..*... |
20250914 00:50:26 [INFO] | ...**.*... | ...***.... | ...*.**... | ....***... |
20250914 00:50:26 [INFO] | ....*..... | ....*..... | .....*.... | .....*.... |
20250914 00:50:26 [INFO] | ...*..*... | ...*...... | ...*..*... | ......*... |
20250914 00:50:26 [INFO] | ...**.*... | ...*****.. | ..*....*.. | ..****.... |
20250914 00:50:26 [INFO] | .......*.. | ...**.**.. |            |            |
...
(OOM)
It's possible "1,2" would do better with a smarter constraint that forbid a third on generation when expanding generation three. I'm not really optimistic though as I saw a lot of weird p2 phoenix crud in the various partials before they died.

(*) "1,4" - unfortunately this includes p1 still lifes similarly to the above p2 phoenix problems. Again, a tricky input file and constraint can start on a first non-p1 row:

Code: Select all

$ cat x2.in
| LLLLLuRRRRR | LLLLLuRRRRR | LLLLLuRRRRR | LLLLLuRRRRR |
| ..4444444.. | ..4444444.. | ..4444444.. | ..4444444.. |
| ..4444444.. | ..4444444.. | ..4444444.. | ..4444444.. |
$ cat x2.cstr
| LLLLLuRRRRR | LLLLLuRRRRR | LLLLLuRRRRR | LLLLLuRRRRR |
| 44444444444 | 44444444444 | 44444444444 | 44444444444 |
| 44444444444 | 44444444444 | 44444444444 | 44444444444 |
| 44444*WWWWW | 44444.WWWWW | 44444WWWWWW | 44444WWWWWW |
$
And this completes pretty quickly:

Code: Select all

$ rlife llsss-recentering p4 x2.in --constraint grid:x2.cstr:none,osc_freq_hack:19 XX
...
20250914 01:12:50 [INFO] Shortest partial:
20250914 01:12:50 [INFO] | LLLLLLLLuRRRRRRRR | LLLLLLLLuRRRRRRRR | LLLLLLLLuRRRRRRRR | LLLLLLLLuRRRRRRRR |
20250914 01:12:50 [INFO] | ....*.....***.... | ....*.....***.... | ....*.....***.... | ....*.....***.... |
20250914 01:12:50 [INFO] | ....*..**....*... | ....*..**....*... | ....*..**....*... | ....*..**....*... |
20250914 01:12:50 [INFO] | ...**.*.***..*... | ...**.*..**..*... | ...**.*..**..*... | ...**.*..**..*... |
20250914 01:12:50 [INFO] | ......**...*.**.. | ......*.*..*.**.. | ......*..*.*.**.. | ......*....*.**.. |
20250914 01:12:50 [INFO] | ......*...**..... | ......*....*..... | ......*.**.*..... | ......*....*..... |
20250914 01:12:50 [INFO] | .......****..**.. | .......**.**.**.. | .......**.*..**.. | .......**.*..**.. |
20250914 01:12:50 [INFO] | ...**...*.....*.. | ..*..*.*...**.*.. | ..............*.. | .........*....*.. |
20250914 01:12:50 [INFO] | ..****...*.**.... | .......**.*..*... | ..........*..*... |                   |
...
20250914 01:12:57 [DEBUG] Completed w_pos 7[3]: 0 B [-200.00%], 9.095340407s [+116.89%]
20250914 01:12:57 [INFO] VmPeak: 4.45 GB
...
20250914 01:12:57 [INFO] Finish: search proper -> took 25.496058559s (173.570822s user, 6.469173s sys)
...
20250914 01:12:57 [INFO] Total: 25.673321177s (174.858228s user, 6.492232s sys)
20250914 01:12:57 [INFO] Done
To summarize this (and the above p3 work): I believe p3 "2 only" and p4 "1,3", "1,4", "2 only", and "3 only" can all be marked as "proven impossible".

amling
Posts: 1154
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling » September 14th, 2025, 4:02 pm

I reworked osc_freq_hack to build an NFA for legal spine cell values and execute that instead. This leaves early truncation (e.g. when three and four on generations are forbidden in p4 it can refuse a third on generation in the third generation) to the more-general (and already written) NFA/DFA code, but does mean it spends a little silly time rewalking each spine. The total number of spines is usually quite small compared to the entire search state so this is probably fine.

We could allow users to specify their own spine NFA entirely (complete with initial states specified per root label), but it would be quite verbose and error-prone to configure these things. While we chew on it I have pushed the current cut of osc_freq_hack to codeberg as 20250914-osc-freq-hack-03.

These changes do get p4 "1,2" a few steps further, but still no dice:

Code: Select all

$ rlife llsss-recentering p4 x1.in --constraint grid:x1.cstr:none,osc_freq_hack:7 XX
...
20250914 11:51:25 [INFO] LlsssConstraintOscFreqHack: 45 NFA states
20250914 11:51:25 [INFO] LlsssConstraintOscFreqHack: 25 DFA states
...
20250914 12:08:29 [INFO] Shortest partial:
20250914 12:08:29 [INFO] | LLLuRRRRR | LLLuRRRRR | LLLuRRRRR | LLLuRRRRR |
20250914 12:08:29 [INFO] | ......... | ....***.. | ......... | ....***.. |
20250914 12:08:29 [INFO] | ...*..*.. | ......... | ...*..*.. | ......... |
20250914 12:08:29 [INFO] | ...*..... | ..**.*... | ....*.... | ..*.**... |
20250914 12:08:29 [INFO] | ...***... | .....*... | ..***.... | ..*...... |
20250914 12:08:29 [INFO] | ..***.... | ..*...... | ...***... | .....*... |
20250914 12:08:29 [INFO] | ....*.... | ..*.**... | ...*..... | ..**.*... |
20250914 12:08:29 [INFO] | ...*..*.. | ......... | ...*..*.. | ......... |
20250914 12:08:29 [INFO] | ......... | ....***.. | ......... | ....***.. |
20250914 12:08:29 [INFO] | ...*.**.. |           |           |           |
...
(OOM)
I also sketched real quick some hacky variations on the max-pop code that would let it contribute here. Specifically adding it for non-WAO rc searches and fixing all spine weights to one (so I can use root labels for constraints instead). With these, and scrolling five rows of still life initialization to be in bounds (and thus counted by max-pop), this can show there are no pop 17 p3 "1,2" oscillators (all three searches complete with no "End"s):

Code: Select all

$ cat x3.in
| LLLLLuRRRRR | LLLLLuRRRRR | LLLLLuRRRRR |
| ..3333333.. | ..3333333.. | ..3333333.. |
| ..3333333.. | ..3333333.. | ..3333333.. |
| ..3333333.. | ..3333333.. | ..3333333.. |
| ..3333333.. | ..3333333.. | ..3333333.. |
| ..3333333.. | ..3333333.. | ..3333333.. |
$ cat x3.cstr
| LLLLLuRRRRR | LLLLLuRRRRR | LLLLLuRRRRR |
| 33333333333 | 33333333333 | 33333333333 |
| 33333333333 | 33333333333 | 33333333333 |
| 33333333333 | 33333333333 | 33333333333 |
| 33333333333 | 33333333333 | 33333333333 |
| 33333333333 | 33333333333 | 33333333333 |
| 33333.WWWWW | 33333*WWWWW | 333333WWWWW |
$ rlife llsss-recentering p3 x3.in --constraint grid:x3.cstr:none,osc_freq_hack:11 --max-pop 00:17 --ends none XX
...
20250914 12:33:36 [INFO] Shortest partial:
20250914 12:33:36 [INFO] | LLLLLuRRRRRR | LLLLLuRRRRRR | LLLLLuRRRRRR |
20250914 12:33:36 [INFO] | ............ | ............ | ............ |
20250914 12:33:36 [INFO] | ............ | ............ | ............ |
20250914 12:33:36 [INFO] | ............ | ............ | ............ |
20250914 12:33:36 [INFO] | ............ | ............ | ............ |
20250914 12:33:36 [INFO] | ....**...... | ....**...... | ....**...... |
20250914 12:33:36 [INFO] | ....*...**.. | ....**..**.. | ....*.*.**.. |
20250914 12:33:36 [INFO] | .........*.. | ......*..*.. | .........*.. |
20250914 12:33:36 [INFO] | ..*******... | ..*******... | ..*******... |
20250914 12:33:36 [INFO] | ..*......... | ..*......... | ..*......... |
20250914 12:33:36 [INFO] | .....**..... | .....**..... | .....**..... |
20250914 12:33:36 [INFO] | .....*...... | .....**..... | .....*.*.... |
20250914 12:33:36 [INFO] | ............ | .......*.... | ............ |
...
20250914 12:33:36 [DEBUG] Completed w_pos 12[0]: 1.62 KB [-84.03%], 7.441451ms [+0.89%]
20250914 12:33:36 [INFO] VmPeak: 759.76 MB
...
20250914 12:33:36 [INFO] Finish: search proper -> took 2.623289714s (17.252031s user, 1.217201s sys)
...
20250914 12:33:36 [INFO] Total: 2.924971682s (18.518248s user, 1.257488s sys)
20250914 12:33:36 [INFO] Done
$ rlife llsss-recentering p3 x3.in --constraint grid:x3.cstr:none,osc_freq_hack:11 --max-pop 01:17 --ends none XX
...
20250914 12:33:53 [INFO] Shortest partial:
20250914 12:33:53 [INFO] | LLLuRRRRRRR | LLLuRRRRRRR | LLLuRRRRRRR |
20250914 12:33:53 [INFO] | ........... | ........... | ........... |
20250914 12:33:53 [INFO] | ........... | ........... | ........... |
20250914 12:33:53 [INFO] | ...**...... | ...**...... | ...**...... |
20250914 12:33:53 [INFO] | ...*.*..... | ...*.*..... | ...*.*..... |
20250914 12:33:53 [INFO] | .....*..... | .....*..... | .....*..... |
20250914 12:33:53 [INFO] | ....**.**.. | ...*.*.**.. | .....*.**.. |
20250914 12:33:53 [INFO] | ..**.*..*.. | ..*..*..*.. | ..*..*.**.. |
20250914 12:33:53 [INFO] | ..**.*.*... | ..**.*..... | ..**.**.... |
20250914 12:33:53 [INFO] | .....*..... | .....*..... | ...*.*..... |
20250914 12:33:53 [INFO] | .....**.... | ....*...... | ..**...*... |
20250914 12:33:53 [INFO] | .....**.... |             |             |
...
20250914 12:33:53 [DEBUG] Completed w_pos 10[1]: 17.35 KB [-124.78%], 10.349145ms [-41.38%]
20250914 12:33:53 [INFO] VmPeak: 864.00 MB
...
20250914 12:33:53 [INFO] Finish: search proper -> took 4.55046728s (31.276582s user, 1.621382s sys)
...
20250914 12:33:53 [INFO] Total: 4.853223436s (32.536334s user, 1.664129s sys)
20250914 12:33:53 [INFO] Done
$ rlife llsss-recentering p3 x3.in --constraint grid:x3.cstr:none,osc_freq_hack:11 --max-pop 02:17 --ends none XX
...
20250914 12:34:03 [INFO] Shortest partial:
20250914 12:34:03 [INFO] | LLLLLuRRRRRR | LLLLLuRRRRRR | LLLLLuRRRRRR |
20250914 12:34:03 [INFO] | ............ | ............ | ............ |
20250914 12:34:03 [INFO] | ............ | ............ | ............ |
20250914 12:34:03 [INFO] | ............ | ............ | ............ |
20250914 12:34:03 [INFO] | ............ | ............ | ............ |
20250914 12:34:03 [INFO] | ......**.... | ......**.... | ......**.... |
20250914 12:34:03 [INFO] | ..**..**.... | ..**.*.*.... | ..**...*.... |
20250914 12:34:03 [INFO] | ..*..*...... | ..*......... | ..*......... |
20250914 12:34:03 [INFO] | ...*******.. | ...*******.. | ...*******.. |
20250914 12:34:03 [INFO] | .........*.. | .........*.. | .........*.. |
20250914 12:34:03 [INFO] | .....**..... | .....**..... | .....**..... |
20250914 12:34:03 [INFO] | .....**..... | .....*.*.... | .....*...... |
20250914 12:34:03 [INFO] | .......*.... | ............ | ............ |
20250914 12:34:03 [INFO] | .....*****.. | ............ |              |
...
20250914 12:34:03 [DEBUG] Completed w_pos 12[2]: 1.36 KB [-144.23%], 9.663054ms [-1.96%]
20250914 12:34:03 [INFO] VmPeak: 1.00 GB
...
20250914 12:34:03 [INFO] Finish: search proper -> took 7.994900424s (55.614359s user, 2.594685s sys)
...
20250914 12:34:03 [INFO] Total: 8.293983375s (56.927624s user, 2.608627s sys)
20250914 12:34:03 [INFO] Done
$
In contrast, running with pop 18 it does find open cuphook (and a bunch of silly incomplete still life top variants):

Code: Select all

$ rlife llsss-recentering p3 x3.in --constraint grid:x3.cstr:none,osc_freq_hack:11 --max-pop 00:18 --ends none XX &> x3.w12.G00-P18.log
...
20250914 12:34:23 [INFO] End (pop 18):
20250914 12:34:23 [INFO] | LLLLLuRRRRRR | LLLLLuRRRRRR | LLLLLuRRRRRR |
20250914 12:34:23 [INFO] | .......*.... | .......*.... | .......*.... |
20250914 12:34:23 [INFO] | .....*...... | .....*...... | .....*...... |
20250914 12:34:23 [INFO] | .....**..... | .....**..... | .....**..... |
20250914 12:34:23 [INFO] | .........*.. | .........*.. | .........*.. |
20250914 12:34:23 [INFO] | ...*******.. | ...*******.. | ...*******.. |
20250914 12:34:23 [INFO] | ..*......... | ..*..*...... | ..*......... |
20250914 12:34:23 [INFO] | ..**...*.... | ..**..**.... | ..**.*.*.... |
20250914 12:34:23 [INFO] | ......**.... | ......**.... | ......**.... |
20250914 12:34:23 [INFO] | ............ | ............ | ............ |
20250914 12:34:23 [INFO] | ............ | ............ | ............ |
20250914 12:34:23 [INFO] End (pop 18):
20250914 12:34:23 [INFO] | LLLLLuRRRRRR | LLLLLuRRRRRR | LLLLLuRRRRRR |
20250914 12:34:23 [INFO] | ............ | ............ | ............ |
20250914 12:34:23 [INFO] | .....**..... | .....**..... | .....**..... |
20250914 12:34:23 [INFO] | .....**..... | .....**..... | .....**..... |
20250914 12:34:23 [INFO] | .........*.. | .........*.. | .........*.. |
20250914 12:34:23 [INFO] | ...*******.. | ...*******.. | ...*******.. |
20250914 12:34:23 [INFO] | ..*......... | ..*..*...... | ..*......... |
20250914 12:34:23 [INFO] | ..**...*.... | ..**..**.... | ..**.*.*.... |
20250914 12:34:23 [INFO] | ......**.... | ......**.... | ......**.... |
20250914 12:34:23 [INFO] | ............ | ............ | ............ |
20250914 12:34:23 [INFO] | ............ | ............ | ............ |
...
For p3 "2,3", scrolling 4 rows in:

Code: Select all

$ cat x4.in
| LLLLLuRRRRR | LLLLLuRRRRR | LLLLLuRRRRR |
| ..3333333.. | ..3333333.. | ..3333333.. |
| ..3333333.. | ..3333333.. | ..3333333.. |
| ..3333333.. | ..3333333.. | ..3333333.. |
| ..3333333.. | ..3333333.. | ..3333333.. |
$ cat x4.cstr
| LLLLLuRRRRR | LLLLLuRRRRR | LLLLLuRRRRR |
| 33333333333 | 33333333333 | 33333333333 |
| 33333333333 | 33333333333 | 33333333333 |
| 33333333333 | 33333333333 | 33333333333 |
| 33333333333 | 33333333333 | 33333333333 |
| 33333.WWWWW | 33333*WWWWW | 333333WWWWW |
$
All of the following complete with no results, eliminating pop 19:

Code: Select all

rlife llsss-recentering p3 x4.in --constraint grid:x4.cstr:none,osc_freq_hack:13 --max-pop 00:19 --ends none XX
rlife llsss-recentering p3 x4.in --constraint grid:x4.cstr:none,osc_freq_hack:13 --max-pop 01:19 --ends none XX
rlife llsss-recentering p3 x4.in --constraint grid:x4.cstr:none,osc_freq_hack:13 --max-pop 02:19 --ends none XX
But gen 00 run with pop 20 finds this form:

Code: Select all

x = 8, y = 8, rule = B3/S23
3bo$2bobo$bo2bo$bob2ob2o$2o4bo$2bobobo$2bo2bo$3b2o!
To summarize, I believe I have confirmed 18 for p3 "1,3" minimum population and confirmed 20 (an update) for p3 "2,3" minimum population.

Post Reply