amling search program principles discussion / brain dump

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

Re: amling search program principles discussion / brain dump

Post by amling »

Sylvani wrote: January 4th, 2026, 2:56 pm ...ignore when cells don't oscillate even if the input file is inconsistent with the rule...
I do not understand at all what this means.
Sylvani wrote: January 4th, 2026, 2:56 pm ...running this input file...
Roots of "LLLuuu..." don't make sense for a left even edge (although they will parse and do something, depending on cells values they are theoretically able to chimerize in a way you almost certainly do not intend).

Mainly though for even edge the axis of symmetry is between the first two columns which should therefore be duplicates of each other (and I would expect them to match in all cells added by the search). Yours are not and I'm not sure therefore what search you intend.
amling
Posts: 1212
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling »

amling wrote: January 3rd, 2026, 3:13 pm
Sylvani wrote: January 2nd, 2026, 12:15 pm Is there a way to use "grid-tool" to convert a cNd-down search into a cNd-f2b search?
The exact definition of that question is complicated but what you're probably wishing for is to-uwi and from-uwi...
I have returned and can hopefully provide more helpful and explicit examples now.

Let's consider a c4d-down partial, the sort of which you might have had going into your question originally:

Code: Select all

| ............................... | ............................... | ............................... | ............................... |
| ............................... | ............................... | ............................... | ............................... |
| ............................... | ....................*.......... | ............................... | ............................... |
| ...................***......... | ....................*.......... | ...............*...**.......... | ..............**.*****......... |
| ...............**......*....... | ..............***...*.*........ | ..............*****.**......... | ..............*.***.***........ |
| ..............**.*.....*....... | ..............*..***...*....... | ..............*.......**....... | ..............*....*...*....... |
| ................*.***...**..... | ................*****.*..*..... | ................*...****....... | .....................*.**...... |
| ..............**...*.*.***..... | ..............*.*.*..*.*.*..... | ..............*.*........*..... | .............**..*.*........... |
| ..............**....*.......... | ..............**...******...... | .............**...**.*......... | .............**...***.......... |
| ..................*...*........ | ..............*....*...*....... | ..............*....*........... | ..............**..**.**........ |
| ..............*.*..*...**...... | ................*....****...... | ............*...*...**.**...... | ...........*...*....***.*...... |
| ...........**..**.****...*..... | ...........******....*...*..... | ..........**....*....*...*..... | ..........**....**.....*.*..... |
| ...........*.*...**.**.***..... | ..........**.***......*.**..... | ..........*......*...**..*..... | ..........*.*.....*.*.......... |
| ...........*..*..*.**.......... | ............*.*.**....***...... | ...........**...***..**........ | ...........***..*..*........... |
| ...............*...*..*........ | ..............**..**.*...*..... | .............**...**.*....*.... | ............***....***.*..*.... |
| ............*..**...*...***.... | ...............**..***..***.... | ..............***.*...*.***.... | ................*...*****.*.... |
| .............*.*....*....*..... | ....................**......... | ..............**.**..*..*...... | .............*.......**.*...... |
| ...............****.*....**.... | .............*.*.**......**.... | .............*..***.*.*........ | .............*.**.**..**....... |
| .............**..*.***......... | .............**..*...**........ | .............*........*...*.... | .............****.*.*.*...**... |
| ..............*....*.*.*....... | ..............*.**.*...*...*... | ..............*.*..**.**..**... | ...............*....*...*...... |
| ..........*...*.**...**.*.***.. | .........**...*.*.**....*.**... | .........**.....*....**.****... | ........***..*.....*....*..*... |
| .........**....*...***..**..... | .........*.*.....**.***.*...... | ........**.*.*****..**..*...... | ........*.....*..*.*....*.*.... |
| .........*.*..**.*......*.*.... | .........*.***.*...*....*...... | .........*.....*...***.*....... | .........*..*..*.*....*........ |
| ..........**.**..*.*........... | ........**.*******............. | .......*...*.....*.**.......... | ......*...***........*......... |
| ......**.*........*...*........ | ......*.**....**..**.*.*....... | .....**....**......*........... | .....****.****..**...*.*....... |
| .....*...*.....***..*.*.**..... | ....**.*..*.....**.**...*...... | ....*..*.*...**.**.**.***...... | ...**.*.*.*..**.*****.***...... |
| ....**.*...*........****....... | ....**.*....*.*........*....... | ...**....*...*.**......*..*.... | ..*.....**...*.*...*....***.... |
| ...*..**.*.*.**.*.*.**...***... | ..*...***.*.*..*........****... | ..***.*...**.*...*.*.**...***.. | ..*...**..*..*.*...........*... |
This is four generations, aligned and padded with periods to make it a UVW prism in geometry c4d-down. We might imagine it with question marks extending "down"-ward (as per the geometry) and padded a great deal more:

Code: Select all

| ............................................... | ............................................... | ............................................... | ............................................... |
| ............................................... | ............................................... | ............................................... | ............................................... |
| ............................................... | ............................................... | ............................................... | ............................................... |
| ............................................... | ............................................... | ............................................... | ............................................... |
| ............................................... | ............................................... | ............................................... | ............................................... |
| ............................................... | ............................................... | ............................................... | ............................................... |
| ............................................... | ............................................... | ............................................... | ............................................... |
| ............................................... | ............................................... | ............................................... | ............................................... |
| ............................................... | ............................................... | ............................................... | ............................................... |
| ............................................... | ............................................... | ............................................... | ............................................... |
| ............................................... | ............................*.................. | ............................................... | ............................................... |
| ...........................***................. | ............................*.................. | .......................*...**.................. | ......................**.*****................. |
| .......................**......*............... | ......................***...*.*................ | ......................*****.**................. | ......................*.***.***................ |
| ......................**.*.....*............... | ......................*..***...*............... | ......................*.......**............... | ......................*....*...*............... |
| ........................*.***...**............. | ........................*****.*..*............. | ........................*...****............... | .............................*.**.............. |
| ......................**...*.*.***............. | ......................*.*.*..*.*.*............. | ......................*.*........*............. | .....................**..*.*................... |
| ......................**....*.................. | ......................**...******.............. | .....................**...**.*................. | .....................**...***.................. |
| ..........................*...*................ | ......................*....*...*............... | ......................*....*................... | ......................**..**.**................ |
| ......................*.*..*...**.............. | ........................*....****.............. | ....................*...*...**.**.............. | ...................*...*....***.*.............. |
| ...................**..**.****...*............. | ...................******....*...*............. | ..................**....*....*...*............. | ..................**....**.....*.*............. |
| ...................*.*...**.**.***............. | ..................**.***......*.**............. | ..................*......*...**..*............. | ..................*.*.....*.*.................. |
| ...................*..*..*.**.................. | ....................*.*.**....***.............. | ...................**...***..**................ | ...................***..*..*................... |
| .......................*...*..*................ | ......................**..**.*...*............. | .....................**...**.*....*............ | ....................***....***.*..*............ |
| ....................*..**...*...***............ | .......................**..***..***............ | ......................***.*...*.***............ | ........................*...*****.*............ |
| .....................*.*....*....*............. | ............................**................. | ......................**.**..*..*.............. | .....................*.......**.*.............. |
| .......................****.*....**............ | .....................*.*.**......**............ | .....................*..***.*.*................ | .....................*.**.**..**............... |
| .....................**..*.***................. | .....................**..*...**................ | .....................*........*...*............ | .....................****.*.*.*...**........... |
| ......................*....*.*.*............... | ......................*.**.*...*...*........... | ......................*.*..**.**..**........... | .......................*....*...*.............. |
| ..................*...*.**...**.*.***.......... | .................**...*.*.**....*.**........... | .................**.....*....**.****........... | ................***..*.....*....*..*........... |
| .................**....*...***..**............. | .................*.*.....**.***.*.............. | ................**.*.*****..**..*.............. | ................*.....*..*.*....*.*............ |
| .................*.*..**.*......*.*............ | .................*.***.*...*....*.............. | .................*.....*...***.*............... | .................*..*..*.*....*................ |
| ..................**.**..*.*................... | ................**.*******..................... | ...............*...*.....*.**.................. | ..............*...***........*................. |
| ..............**.*........*...*................ | ..............*.**....**..**.*.*............... | .............**....**......*................... | .............****.****..**...*.*............... |
| .............*...*.....***..*.*.**............. | ............**.*..*.....**.**...*.............. | ............*..*.*...**.**.**.***.............. | ...........**.*.*.*..**.*****.***.............. |
| ............**.*...*........****............... | ............**.*....*.*........*............... | ...........**....*...*.**......*..*............ | ..........*.....**...*.*...*....***............ |
| ...........*..**.*.*.**.*.*.**...***........... | ..........*...***.*.*..*........****........... | ..........***.*...**.*...*.*.**...***.......... | ..........*...**..*..*.*...........*........... |
| ??????????????????????????????????????????????? | ??????????????????????????????????????????????? | ??????????????????????????????????????????????? | ??????????????????????????????????????????????? |
| ??????????????????????????????????????????????? | ??????????????????????????????????????????????? | ??????????????????????????????????????????????? | ??????????????????????????????????????????????? |
| ??????????????????????????????????????????????? | ??????????????????????????????????????????????? | ??????????????????????????????????????????????? | ??????????????????????????????????????????????? |
| ??????????????????????????????????????????????? | ??????????????????????????????????????????????? | ??????????????????????????????????????????????? | ??????????????????????????????????????????????? |
| ??????????????????????????????????????????????? | ??????????????????????????????????????????????? | ??????????????????????????????????????????????? | ??????????????????????????????????????????????? |
| ??????????????????????????????????????????????? | ??????????????????????????????????????????????? | ??????????????????????????????????????????????? | ??????????????????????????????????????????????? |
| ??????????????????????????????????????????????? | ??????????????????????????????????????????????? | ??????????????????????????????????????????????? | ??????????????????????????????????????????????? |
| ??????????????????????????????????????????????? | ??????????????????????????????????????????????? | ??????????????????????????????????????????????? | ??????????????????????????????????????????????? |
| ??????????????????????????????????????????????? | ??????????????????????????????????????????????? | ??????????????????????????????????????????????? | ??????????????????????????????????????????????? |
| ??????????????????????????????????????????????? | ??????????????????????????????????????????????? | ??????????????????????????????????????????????? | ??????????????????????????????????????????????? |
I would not use this picture for an actual search, but just to illustrate the direction of the geometry here.

Converted from XYT coordinates into UWI for c4d-down it looks ... identical. This is an accident of that geometry and probably does not help build intuition. The important structure is that each subtile position (the blocks between pipes) is a rectangle of cells on top of a rectangle of question marks and these are aligned between the blocks. We'll see this structure again in a bit.

Now let's see what this looks like in c4d-f2b. Piping that exact picture into "rlife grid-tool to-uwi c4d-f2b", we get...

Code: Select all

|                        .                        |                                                 |
|                        .                        |                                                 |
|                        .                        |                       ..                        |
|                        .                        |                       ..                        |
|                       ...                       |                       ..                        |
|                       ...                       |                       ..                        |
|                       ...                       |                      ....                       |
|                       ...                       |                      ....                       |
|                      .....                      |                      ....                       |
|                      .....                      |                      ....                       |
|                      .....                      |                     ......                      |
|                      .....                      |                     ......                      |
|                     .......                     |                     ......                      |
|                     .......                     |                     ......                      |
|                     .......                     |                    ........                     |
|                     .......                     |                    ........                     |
|                    .........                    |                    ........                     |
|                    .........                    |                    ........                     |
|                    .........                    |                   ..........                    |
|                    .........                    |                   ..........                    |
|                   ...........                   |                   ..........                    |
|                   ...........                   |                   ..........                    |
|                   ...........                   |                  ............                   |
|                   ...........                   |                  ............                   |
|                  .............                  |                  ............                   |
|                  .............                  |                  ............                   |
|                  .............                  |                 ..............                  |
|                  .............                  |                 ..............                  |
|                 ...............                 |                 ..............                  |
|                 ...............                 |                 ..............                  |
|                 ...............                 |                ................                 |
|                 ...............                 |                ................                 |
|                .................                |                ................                 |
|                .................                |                ................                 |
|                .................                |               ..................                |
|                .................                |               ..................                |
|               ...................               |               ..................                |
|               ...................               |               ..................                |
|               ...................               |              ....................               |
|               ...................               |              ....................               |
|              .....................              |              ....................               |
|              .....................              |              ....................               |
|              .....................              |             ......................              |
|              .....................              |             ......................              |
|             .......................             |             ......................              |
|             .......................             |             ......................              |
|             .......................             |            ........................             |
|             .......................             |            ........................             |
|            .........................            |            ........................             |
|            .........................            |            ........................             |
|            .........................            |           ..........................            |
|            .........................            |           ..........................            |
|           ...........................           |           ..........................            |
|           ...........................           |           ..........................            |
|           ...........................           |          ............................           |
|           ...........................           |          ............................           |
|          .............................          |          ............................           |
|          .............................          |          ............................           |
|          .............................          |         ..............................          |
|          .............................          |         ..............................          |
|         ...............................         |         ..............................          |
|         ...............................         |         ..............................          |
|         ...............................         |        ................................         |
|         ...............................         |        ................................         |
|        .................................        |        ................................         |
|        .................................        |        ................................         |
|        .................................        |       ..................................        |
|        .................................        |       ..................................        |
|       ...................................       |       ..................................        |
|       ......................*............       |       ......................*...........        |
|       ......................**...........       |      ......................**............       |
|       ......................**...........       |      ......................**............       |
|      ?......................**............      |      ......................**............       |
|      ?.......................*............      |      ......................*.............       |
|      ?.......................*............      |     ??....................*...............      |
|      ?....................*..**...........      |     ??....................*...............      |
|     ???................*..****.*...........     |     ??................*..**..*............      |
|     ???...............**..*.**..*..........     |     ??................**.**..**...........      |
|     ???...............***.*.*.**...........     |    ????...............**..*....*...........     |
|     ???...............**..*...**...........     |    ????...............**.*****.*...........     |
|    ?????..............*..*...*..*...........    |    ????..................*.*...*...........     |
|    ?????................*....***............    |    ????..................*.....*...........     |
|    ?????..............*........*............    |   ??????...............*.....*..............    |
|    ?????..............**..*.*.***...........    |   ??????..............***...**..............    |
|   ???????................**..**..............   |   ??????..............*........*............    |
|   ???????...............***...*.*............   |   ??????..............*..*.....*............    |
|   ???????.................*.*.*..............   |  ????????............*.*.*.*....*............   |
|   ???????.............**....**..*............   |  ????????..............***..*................   |
|  ?????????...................**.*.............  |  ????????.............*..*..*.**.............   |
|  ?????????.............*....*****.............  |  ????????.............*..*.**.*..............   |
|  ?????????.............*....*..**.............  | ??????????...........*.*.***..................  |
|  ?????????.**....*.....*..*.**..*.............  | ??????????*.*....*.....**....*................  |
|  ??????????****..**....*.***...**.............. | ??????????****..**....*.**...*.*..............  |
|  ??????????.***..**..*.*.*....**............... | ??????????*.***.**...*..*......*..............  |
|  ??????????**.**.**..***.*..*.................. |  ??????????.*.*.**..*.**...*.*.**.............  |
|  ??????????...*...*..*....*.**..*.............. |  ??????????.*..**...*..*....*.*.*.............  |
|   ??????????.........**...***...*.............  |  ??????????*....*...*.**.*..*.................  |
|   ??????????..***.*..**..*..*****.............  |  ??????????..**.*...*..*....**................  |
|   ??????????..*...*......*..*...*.............  |   ??????????**.***..*.*..***.*...............   |
|   ??????????...*.....**...**.*................  |   ??????????**.*.*..*....*...*...............   |
|    ??????????*.*.*..*..*......*..............   |   ??????????*.......*.****.*.*...............   |
|    ??????????*...**.*..*.*..*.*..............   |   ??????????*.*.*..*.**..*...................   |
|    ??????????..*.*.*...**..**.*..............   |    ??????????.........**.*..*...............    |
|    ??????????**.***..**...*..**..............   |    ??????????*.*.**..***.***................    |
|     ??????????*...****...*.*.**.............    |    ??????????.*.*..*.*.*..**................    |
|     ??????????....*..**..**.***.............    |    ??????????.****.*...*.**.................    |
|     ??????????...*..**........*.............    |     ??????????.*..**.*.**....*.............     |
|     ??????????...*.....**.*...*.............    |     ??????????*...**.....*..**.............     |
|      ??????????*.......**..................     |     ??????????*....**...***..*.............     |
|      ??????????.*.**.***...................     |     ??????????*..*.*.....***...............     |
|      ??????????*.*...*.*...................     |      ??????????.....*...*..*..............      |
|      ??????????..*...*..*.**...............     |      ??????????*..**.**.*..**.............      |
|       ??????????*.*.*.*.*...*.............      |      ??????????.**.....*.*.*..............      |
|       ??????????.*..*....*..*.............      |      ??????????.**..*.**.*.*..............      |
|       ??????????*...*....*.***............      |       ??????????*.*...**...**............       |
|       ??????????*..*..*..***.*............      |       ??????????..*..**.....*............       |
|        ??????????..***.***.*.............       |       ??????????.**..****...*............       |
|        ??????????*.**..*.*.*.............       |       ??????????.***........*............       |
|        ??????????.**.*****...............       |        ??????????*.........*............        |
|        ??????????*.*.....................       |        ??????????...*..*...*............        |
|         ??????????.......*..............        |        ??????????...***.................        |
|         ??????????..*....*..............        |        ??????????..*.....*..............        |
|         ??????????*.*....*.*............        |         ??????????*.*...*..............         |
|         ??????????..*.**.*.*............        |         ??????????..**..*..............         |
|          ??????????.*.*.***............         |         ??????????..*..****............         |
|          ??????????.....*.**...........         |         ??????????.***..*..*...........         |
|          ??????????*......**...........         |          ??????????***....*...........          |
|          ??????????....................         |          ??????????...*...*...........          |
|           ??????????**...*.*..........          |          ??????????..*....*...........          |
|           ??????????..................          |          ??????????..**..**...........          |
|           ??????????*.*...............          |           ??????????.**..............           |
|           ??????????..*...............          |           ??????????.**..............           |
|            ??????????..*.............           |           ??????????***..............           |
|            ??????????................           |           ??????????..*..............           |
|            ??????????................           |            ??????????...............            |
|            ??????????.*..............           |            ??????????*..............            |
|             ??????????*.............            |            ??????????...............            |
|             ??????????*.............            |            ??????????.*.............            |
|             ??????????.*............            |             ??????????*............             |
|             ??????????.*............            |             ??????????*............             |
|              ??????????*...........             |             ??????????*............             |
|              ??????????*...........             |             ??????????.............             |
|              ??????????*...........             |              ??????????...........              |
|              ??????????*...........             |              ??????????...........              |
|               ??????????..........              |              ??????????*..........              |
|               ??????????..........              |              ??????????...........              |
|               ??????????..........              |               ??????????.........               |
|               ??????????..........              |               ??????????.........               |
|                ??????????........               |               ??????????.........               |
|                ??????????........               |               ??????????.........               |
|                ??????????........               |                ??????????.......                |
|                ??????????........               |                ??????????.......                |
|                 ??????????......                |                ??????????.......                |
|                 ??????????......                |                ??????????.......                |
|                 ??????????......                |                 ??????????.....                 |
|                 ??????????......                |                 ??????????.....                 |
|                  ??????????....                 |                 ??????????.....                 |
|                  ??????????....                 |                 ??????????.....                 |
|                  ??????????....                 |                  ??????????...                  |
|                  ??????????....                 |                  ??????????...                  |
|                   ??????????..                  |                  ??????????...                  |
|                   ??????????..                  |                  ??????????...                  |
|                   ??????????..                  |                   ??????????.                   |
|                   ??????????..                  |                   ??????????.                   |
|                    ??????????                   |                   ??????????.                   |
|                    ??????????                   |                   ??????????.                   |
|                    ??????????                   |                    ?????????                    |
|                    ??????????                   |                    ?????????                    |
|                     ????????                    |                    ?????????                    |
|                     ????????                    |                    ?????????                    |
|                     ????????                    |                     ???????                     |
|                     ????????                    |                     ???????                     |
|                      ??????                     |                     ???????                     |
|                      ??????                     |                     ???????                     |
|                      ??????                     |                      ?????                      |
|                      ??????                     |                      ?????                      |
|                       ????                      |                      ?????                      |
|                       ????                      |                      ?????                      |
|                       ????                      |                       ???                       |
|                       ????                      |                       ???                       |
|                        ??                       |                       ???                       |
|                        ??                       |                       ???                       |
|                        ??                       |                        ?                        |
|                        ??                       |                        ?                        |
|                                                 |                        ?                        |
|                                                 |                        ?                        |
... a mess. The problem is we now need to round both the file and the question marks. Rounding the entire file is easy: when it was already padded so much we can just chop it down. I have deleted the first 61 lines, the last 62 lines, the left 8 columns, and the right 9 columns:

Code: Select all

| .............................. | .............................. |
| .............................. | .............................. |
| .............................. | .............................. |
| .............................. | .............................. |
| .............................. | .............................. |
| .............................. | .............................. |
| .............................. | .............................. |
| .............................. | .............................. |
| ....................*......... | ....................*......... |
| ....................**........ | ...................**......... |
| ....................**........ | ...................**......... |
| ....................**........ | ...................**......... |
| .....................*........ | ...................*.......... |
| .....................*........ | ..................*........... |
| ..................*..**....... | ..................*........... |
| ...............*..****.*...... | ..............*..**..*........ |
| ..............**..*.**..*..... | ..............**.**..**....... |
| ..............***.*.*.**...... | ..............**..*....*...... |
| ..............**..*...**...... | ..............**.*****.*...... |
| ..............*..*...*..*..... | .................*.*...*...... |
| ................*....***...... | .................*.....*...... |
| ..............*........*...... | ...............*.....*........ |
| ..............**..*.*.***..... | ..............***...**........ |
| ?................**..**....... | ..............*........*...... |
| ?...............***...*.*..... | ..............*..*.....*...... |
| ?.................*.*.*....... | ?............*.*.*.*....*..... |
| ?.............**....**..*..... | ?..............***..*......... |
| ??...................**.*..... | ?.............*..*..*.**...... |
| ??.............*....*****..... | ?.............*..*.**.*....... |
| ??.............*....*..**..... | ??...........*.*.***.......... |
| ??.**....*.....*..*.**..*..... | ??*.*....*.....**....*........ |
| ???****..**....*.***...**..... | ??****..**....*.**...*.*...... |
| ???.***..**..*.*.*....**...... | ??*.***.**...*..*......*...... |
| ???**.**.**..***.*..*......... | ???.*.*.**..*.**...*.*.**..... |
| ???...*...*..*....*.**..*..... | ???.*..**...*..*....*.*.*..... |
| ????.........**...***...*..... | ???*....*...*.**.*..*......... |
| ????..***.*..**..*..*****..... | ???..**.*...*..*....**........ |
| ????..*...*......*..*...*..... | ????**.***..*.*..***.*........ |
| ????...*.....**...**.*........ | ????**.*.*..*....*...*........ |
| ?????*.*.*..*..*......*....... | ????*.......*.****.*.*........ |
| ?????*...**.*..*.*..*.*....... | ????*.*.*..*.**..*............ |
| ?????..*.*.*...**..**.*....... | ?????.........**.*..*......... |
| ?????**.***..**...*..**....... | ?????*.*.**..***.***.......... |
| ??????*...****...*.*.**....... | ?????.*.*..*.*.*..**.......... |
| ??????....*..**..**.***....... | ?????.****.*...*.**........... |
| ??????...*..**........*....... | ??????.*..**.*.**....*........ |
| ??????...*.....**.*...*....... | ??????*...**.....*..**........ |
| ???????*.......**............. | ??????*....**...***..*........ |
| ???????.*.**.***.............. | ??????*..*.*.....***.......... |
| ???????*.*...*.*.............. | ???????.....*...*..*.......... |
| ???????..*...*..*.**.......... | ???????*..**.**.*..**......... |
| ????????*.*.*.*.*...*......... | ???????.**.....*.*.*.......... |
| ????????.*..*....*..*......... | ???????.**..*.**.*.*.......... |
| ????????*...*....*.***........ | ????????*.*...**...**......... |
| ????????*..*..*..***.*........ | ????????..*..**.....*......... |
| ?????????..***.***.*.......... | ????????.**..****...*......... |
| ?????????*.**..*.*.*.......... | ????????.***........*......... |
| ?????????.**.*****............ | ?????????*.........*.......... |
| ?????????*.*.................. | ?????????...*..*...*.......... |
| ??????????.......*............ | ?????????...***............... |
| ??????????..*....*............ | ?????????..*.....*............ |
| ??????????*.*....*.*.......... | ??????????*.*...*............. |
| ??????????..*.**.*.*.......... | ??????????..**..*............. |
Now we have to round the question marks to a bottom rectangle. This is somewhat more subjective depending on how much partial you want to preserve (i.e. what about it you care about), how many wildcards on the edge you need (to be a viable search rather than exhaust immediately) and can afford (to survive their expansion during initialization). The most aggressive thing in one direction is to just chop and pray, mostly replacing the bottom with question marks and replacing a few straggler question marks on the left edge with periods:

Code: Select all

| .............................. | .............................. |
| .............................. | .............................. |
| .............................. | .............................. |
| .............................. | .............................. |
| .............................. | .............................. |
| .............................. | .............................. |
| .............................. | .............................. |
| .............................. | .............................. |
| ....................*......... | ....................*......... |
| ....................**........ | ...................**......... |
| ....................**........ | ...................**......... |
| ....................**........ | ...................**......... |
| .....................*........ | ...................*.......... |
| .....................*........ | ..................*........... |
| ..................*..**....... | ..................*........... |
| ...............*..****.*...... | ..............*..**..*........ |
| ..............**..*.**..*..... | ..............**.**..**....... |
| ..............***.*.*.**...... | ..............**..*....*...... |
| ..............**..*...**...... | ..............**.*****.*...... |
| ..............*..*...*..*..... | .................*.*...*...... |
| ................*....***...... | .................*.....*...... |
| ..............*........*...... | ...............*.....*........ |
| ..............**..*.*.***..... | ..............***...**........ |
| .................**..**....... | ..............*........*...... |
| ................***...*.*..... | ..............*..*.....*...... |
| ..................*.*.*....... | .............*.*.*.*....*..... |
| ..............**....**..*..... | ...............***..*......... |
| .....................**.*..... | ..............*..*..*.**...... |
| ...............*....*****..... | ..............*..*.**.*....... |
| ...............*....*..**..... | .............*.*.***.......... |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
| ?????????????????????????????? | ?????????????????????????????? |
Depending on the size of your partial and what you want to preserve you may want / have to include some W wildcards above the question marks.

Now trim it a bunch more and add roots:

Code: Select all

| LLLuuuuuuuuuuuuRRR | LLLuuuuuuuuuuuuRRR |
| .................. | .................. |
| .................. | .................. |
| .................. | .................. |
| .................. | .................. |
| .................. | .................. |
| .................. | .................. |
| .................. | .................. |
| .................. | .................. |
| ..........*....... | ..........*....... |
| ..........**...... | .........**....... |
| ..........**...... | .........**....... |
| ..........**...... | .........**....... |
| ...........*...... | .........*........ |
| ...........*...... | ........*......... |
| ........*..**..... | ........*......... |
| .....*..****.*.... | ....*..**..*...... |
| ....**..*.**..*... | ....**.**..**..... |
| ....***.*.*.**.... | ....**..*....*.... |
| ....**..*...**.... | ....**.*****.*.... |
| ....*..*...*..*... | .......*.*...*.... |
| ......*....***.... | .......*.....*.... |
| ....*........*.... | .....*.....*...... |
| ....**..*.*.***... | ....***...**...... |
| .......**..**..... | ....*........*.... |
| ......***...*.*... | ....*..*.....*.... |
| ........*.*.*..... | ...*.*.*.*....*... |
| ....**....**..*... | .....***..*....... |
| ...........**.*... | ....*..*..*.**.... |
| .....*....*****... | ....*..*.**.*..... |
| .....*....*..**... | ...*.*.***........ |
Now feed that back through "rlife grid-tool from-uwi c4d-f2b":

Code: Select all

|                            |                            |                  R         |                  .         |
|                  R.        |                  ..        |                 R..        |                 ...        |
|                 R...       |                 ....       |                R....       |                .....       |
|                R.....      |                ......      |               u......      |               .......      |
|               u.......     |               ........     |              u........     |              .........     |
|              u.........    |              ..........    |             u..........    |             ...........    |
|             u...........   |             ............   |            u............   |            .............   |
|            u.............  |            ..............  |           u..............  |           ...............  |
|           u............... |           ........*......  |          u...............  |          ...............   |
|          u.......***.....  |          .........*.....   |         u....*...**.....   |         ....**.*****...    |
|         u....**......*..   |         ....***...*.*..    |        u....*****.**...    |        .....*.***.***.     |
|        u....**.*.....*.    |        .....*..***...*     |       u.....*.......**     |       ......*....*...      |
|       u.......*.***...     |       ........*****.*      |      u........*...***      |      ..............*       |
|      u......**...*.*.      |      .......*.*.*..*       |     u.......*.*.....       |     .......**..*.*.        |
|     u.......**....*.       |     ........**...**        |    u.......**...**.        |    ........**...**         |
|    u............*..        |    .........*....*         |   L.........*....*         |   ..........**..*          |
|   L.........*.*..*         |   ............*..          |  L........*...*..          |  ........*...*..           |
|  L.......**..**.*          |  ........******.           | L.......**....*.           | ........**....*            |
| L........*.*...*           | ........**.***.            | ........*......            | ........*.*...             |
|  ........*..*..            |  .........*.*.             |  ........**...             |  ........***.              |
|   ...........*             |   ..........*              |   .........**              |   ........**               |
|    .......*..              |    .........               |    .........               |    ........                |
|     .......*               |     .......                |     .......                |     ......                 |
|      ......                |      .....                 |      .....                 |      ....                  |
|       ....                 |       ...                  |       ...                  |       ..                   |
|        ..                  |        .                   |        .                   |                            |
With that saved as x6.in you can start e.g.:

Code: Select all

$ rlife llsss-recentering c4d-f2b x6.in 17
...
20260111 13:49:50 [INFO] Thinnest partial:
20260111 13:49:50 [INFO] |                                         |                      R                  |                      .                  |                     R.                  |
20260111 13:49:50 [INFO] |                      ..                 |                     R..                 |                     ...                 |                    R...                 |
20260111 13:49:50 [INFO] |                     ....                |                    u....                |                    .....                |                   u.....                |
20260111 13:49:50 [INFO] |                    ......               |                   u......               |                   .......               |                  u.......               |
20260111 13:49:50 [INFO] |                   ........              |                  u........              |                  .........              |                 u.........              |
20260111 13:49:50 [INFO] |                  ..........             |                 u..........             |                 ...........             |                u...........             |
20260111 13:49:50 [INFO] |                 ............            |                u............            |                .............            |               u.............            |
20260111 13:49:50 [INFO] |                ........*.....           |               u..............           |               ...............           |              u.......***.....           |
20260111 13:49:50 [INFO] |               .........*......          |              u....*...**......          |              ....**.*****.....          |             u....**......*....          |
20260111 13:49:50 [INFO] |              ....***...*.*.....         |             u....*****.**......         |             .....*.***.***.....         |            u....**.*.....*.....         |
20260111 13:49:50 [INFO] |             .....*..***...*.....        |            u.....*.......**.....        |            ......*....*...*.....        |           u.......*.***...**....        |
20260111 13:49:50 [INFO] |            ........*****.*..*....       |           u........*...****......       |           ..............*.**.....       |          u......**...*.*.***.....       |
20260111 13:49:50 [INFO] |           .......*.*.*..*.*.*.....      |          u.......*.*........*.....      |          .......**..*.*...........      |         u.......**....*...........      |
20260111 13:49:50 [INFO] |          ........**...******.......     |         u.......**...**.*..........     |         ........**...***...........     |        u............*...*..........     |
20260111 13:49:50 [INFO] |         .........*....*...*.........    |        L.........*....*.............    |        ..........**..**.**..........    |       L.........*.*..*...**.**......    |
20260111 13:49:50 [INFO] |        ............*....***...**.....   |       L........*...*...**.**.**.*....   |       ........*...*....***.****......   |      L.......**..**.****......**.....   |
20260111 13:49:50 [INFO] |       ........******....*...*.***.....  |      L.......**....*....*...*.*.*.....  |      ........**....**.....***.*.**....  |     L........*.*...**.**.**.....*.....  |
20260111 13:49:50 [INFO] |      ........**.***......****....*..... |     L........*......*...**....*..*..... |     .........*.*.....*.*.....*.*....... |    L.........*..*..*.**...*.*****.....  |
20260111 13:49:50 [INFO] |     ...........*.*.**....*.**.*..*..... |    L..........**...***..**............  |    ...........***..*..*...*...........  |   L..............*...*..*.....**.....   |
20260111 13:49:50 [INFO] |    ..............**..**..*..**........  |   L.............**...**.**..*........   |   .............***....***..*...***...   |  L............*..**...*.**..*.*..*..    |
20260111 13:49:50 [INFO] |   ................**...*..*...******.   |  L...............***.*....**..*****.    |  ..................*...*..***.****..    | L..............*.*.....*.*.......**     |
20260111 13:49:50 [INFO] |  .....................***.*...*..*..    |  ................*..**..**...**....     |  ...............*....*...*.*.**....     |  ................****.*......*...*      |
20260111 13:49:50 [INFO] |   ..............*.***.**......*..**     |   ..............*.***.....*.....*.      |   ..............*.**..*....*...**.      |   .............**.....***....***.       |
20260111 13:49:50 [INFO] |    .............**.*.*.*.**......*      |    .............**...*.*.***....*       |    .............*****.*.*****....       |    .............*...*.*.**.**.**        |
20260111 13:49:50 [INFO] |     ...............**..*.**.*....       |     ...................*....**..        |     ..................*..*...*.*        |     ............****..*.....**.         |
20260111 13:49:50 [INFO] |      ..............***.*.*.*.**.        |      ....................*.*.**         |      ..........*......*.*.*...*         |      .........**.*...**.*.*...          |
20260111 13:49:50 [INFO] |       .........**...**...*.*...         |       ........***....**..*....          |       ........*****...*..*.*..          |       ........*...*..**.**.**           |
20260111 13:49:50 [INFO] |        .......**...*.....****.          |        .......*..***...*.*.**           |        .......*..**..*.*..**.           |        .......*....*.*......            |
20260111 13:49:50 [INFO] |         ........*.**.****....           |         .......*.*....**....            |         ........**.*..***.**            |         ........**......**.             |
20260111 13:49:50 [INFO] |          .........**...*.***            |          ...........*......             |          ..............*...             |          .........*...***.              |
20260111 13:49:50 [INFO] |           ........*.....*.*             |           ........*.....*.              |           .........*......              |           ...............               |
20260111 13:49:50 [INFO] |            .........*.....              |            ........*...*.               |            ............*.               |            ........**...                |
20260111 13:49:50 [INFO] |             ........*..**               |             ...........*                |             .......**.*.                |             .......****                 |
20260111 13:49:50 [INFO] |              ...........                |              ......**..                 |              ......*..*                 |              .....**..                  |
20260111 13:49:50 [INFO] |               .....**..                 |               .....***                  |               .....*..                  |               .......                   |
20260111 13:49:50 [INFO] |                .....*.                  |                ......                   |                ......                   |                .....                    |
20260111 13:49:50 [INFO] |                 ....*                   |                 ....                    |                 ....                    |                 ...                     |
20260111 13:49:50 [INFO] |                  ...                    |                  ..                     |                  ..                     |                  .                      |
20260111 13:49:50 [INFO] |                   .                     |                                         |                                         |                                         |
...
20260111 13:49:50 [DEBUG] Completed w_pos 69[0]: 0 B [-200.00%], 14.160428ms [-8.03%]
20260111 13:49:50 [INFO] VmPeak: 2.24 GB
...
20260111 13:49:50 [INFO] Total: 6.383260556s (55.056299s user, 7.269357s sys)
20260111 13:49:50 [INFO] Done
The choice of trimming/padding with wildcards is definitely more art than science and the number (6) on that input file (x6.in) tells you how many tries it took me to make a version of this that wasn't immediately unextendable.

This hopefully addresses the original question to some degree, although it sounds like you had mostly worked through it already.
amling
Posts: 1212
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling »

amling wrote: January 4th, 2026, 2:45 am In general if you are running recentering you need to think about and specify root labels. I am hesitant to refuse periods and asterisks as labels for no reason other than to preclude this sort of user error, but I feel like it has come up a lot.
I am not very happy about it, but at least for now I have added code (4ffe4485e15f) to refuse roots of '.' and '*':

Code: Select all

$ cat oops.in
| ... |
| ... |
| ... |
$ rlife llsss-recentering p1 oops.in 00
...
Error: StringError { msg: "Recentering pictures must have (actual) roots.  Root '.' suggests this input file is mistaken." }
$ cat oops2.in
| *** |
| *** |
| *** |
$ rlife llsss-recentering p1 oops2.in 00
...
Error: StringError { msg: "Recentering pictures must have (actual) roots.  Root '*' suggests this input file is mistaken." }
$
amling
Posts: 1212
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling »

Sylvani wrote: January 4th, 2026, 2:56 pm ...this input file (I don't see any inconsistencies in the rules)...

Code: Select all

$ cat 0.in
 |           |           |           |           |           |           |
 |           |           |           |           |           |           |
 |           |           |           |           | LLLuuuRRR | LLLuuuRRR |
 |           |           | LLLuuuRRR | LLLuuuRRR | ......... | ......... |
 | LLLuuuRRR | LLLuuuRRR | ......... | ......... | ......... | ......... |
 | ......... | ......... | ......... | ......... | ......... | ......... |
 | ......... | ......... | ......... | ......... | ......... | ......... |
 | ......... | ......... | ......... | ......... | ......... | ......... |
 | ......... | ......... | *........ | ......... | ..?????.. | ..?????.. |
 | ......... | **....... | ..?????.. | ..?????.. | ..?????.. | ..?????.. |
 | ..?????.. | ..?????.. | ..?????.. | ..?????.. |           |           |
 | ..?????.. | ..?????.. |           |           |           |           |
 |           |           |           |           |           |           |
 |           |           |           |           |           |           |
 |           |           |           |           |           |           |
with the exact command

Code: Select all

LLSSS_HALT_ON_ENDS=true LLSSS_MAX_TABLE_SIZE=24 ./rlife llsss-recentering 3c6-f2b 0.in 17 --left-edge even --pre-reify-autochoke 8GB
There are a few things wrong here. First, that input file has doubled roots. Consider it in UWI view:

Code: Select all

$ cat x8-orig.in
|           |           |           |           |           |           |
|           |           |           |           |           |           |
|           |           |           |           | LLLuuuRRR | LLLuuuRRR |
|           |           | LLLuuuRRR | LLLuuuRRR | ......... | ......... |
| LLLuuuRRR | LLLuuuRRR | ......... | ......... | ......... | ......... |
| ......... | ......... | ......... | ......... | ......... | ......... |
| ......... | ......... | ......... | ......... | ......... | ......... |
| ......... | ......... | ......... | ......... | ......... | ......... |
| ......... | ......... | *........ | ......... | ..?????.. | ..?????.. |
| ......... | **....... | ..?????.. | ..?????.. | ..?????.. | ..?????.. |
| ..?????.. | ..?????.. | ..?????.. | ..?????.. |           |           |
| ..?????.. | ..?????.. |           |           |           |           |
|           |           |           |           |           |           |
|           |           |           |           |           |           |
|           |           |           |           |           |           |
$ rlife grid-tool to-uwi 3c6-f2b < x8-orig.in
| LLLuuuRRR | LLLuuuRRR | LLLuuuRRR |
| LLLuuuRRR | LLLuuuRRR | LLLuuuRRR |
| ......... | ......... | ......... |
| ......... | ......... | ......... |
| ......... | ......... | ......... |
| ......... | ......... | ......... |
| ......... | ......... | ......... |
| ......... | ......... | ......... |
| ......... | ......... | ......... |
| ......... | ......... | ......... |
| ......... | *........ | ......... |
| **....... | ......... | ......... |
| ..?????.. | ..?????.. | ..?????.. |
| ..?????.. | ..?????.. | ..?????.. |
| ..?????.. | ..?????.. | ..?????.. |
| ..?????.. | ..?????.. | ..?????.. |
$
When it runs it reads the first row as roots and the second row as part of the picture. The search only starts because it prunes the context above the question marks down to the minimum it needs for a search (4 W rows) and so doesn't try to interpret the second LLLuuuRRR W row as cell values. This is effectively running with this (UWI view, then XYT view):

Code: Select all

| LLLuuuRRR | LLLuuuRRR | LLLuuuRRR |
| ......... | ......... | ......... |
| ......... | ......... | ......... |
| ......... | *........ | ......... |
| **....... | ......... | ......... |
| ..?????.. | ..?????.. | ..?????.. |
| ..?????.. | ..?????.. | ..?????.. |
| ..?????.. | ..?????.. | ..?????.. |
| ..?????.. | ..?????.. | ..?????.. |

Code: Select all

|           |           |           |           |           |           |
|           |           |           |           | LLLuuuRRR | ......... |
|           |           | LLLuuuRRR | ......... | ......... | *........ |
| LLLuuuRRR | ......... | ......... | ......... | **....... | ..?????.. |
| ......... | ......... | ......... | ..?????.. | ..?????.. | ..?????.. |
| ......... | ..?????.. | ..?????.. | ..?????.. | ..?????.. |           |
| ..?????.. | ..?????.. | ..?????.. |           |           |           |
| ..?????.. |           |           |           |           |           |
Second, the roots are wrong for an even search. Outside of very special circumstances, fixed edges in recentering can/should be "u" all the way to the edge so that all spines are considered distinct. With this unnecessary "LLL" the first three roots are considered identical and are theoretically able to chimerize in unintended ways even if this particular input file makes that unlikely (if not impossible).

Finally, the cell values are not such that an even search would generate which suggests to me confusion about where the axis of symmetry lies. LLSSS puts it between the first two columns while I'm guessing your input file is meant as if it were left of the first. Doubling for clarity and remove the roots and question marks for the moment I assume you mean this:

Code: Select all

|            |            |            |            | .......... | .......... |
|            |            | .......... | .......... | .......... | .......... |
| .......... | .......... | .......... | .......... | ....**.... | .......... |
| .......... | .......... | .......... | ...****... |            |            |
| .......... | .......... |            |            |            |            |
You can halve this (still duplicating center two columns), and label the roots like:

Code: Select all

$ cat x8-v1.in
|        |        |        |        | uuuRRR | ...... |
|        |        | uuuRRR | ...... | ...... | ...... |
| uuuRRR | ...... | ...... | ...... | ...... | ...... |
| ...... | ...... | ...... | ...... | ...... |        |
| ...... | **.... | ...... |        |        |        |
| ***... |        |        |        |        |        |
$ rlife llsss-recentering 3c6-f2b x8-v1.in --left-edge even XX
...
Which produces partials like:

Code: Select all

...
20260111 14:43:01 [INFO] Thinnest partial:
20260111 14:43:01 [INFO] |            |            |            |            |            | uuuRRRRRRR |
20260111 14:43:01 [INFO] |            |            |            | uuuRRRRRRR | .......... | .......... |
20260111 14:43:01 [INFO] |            | uuuRRRRRRR | .......... | .......... | .......... | .......... |
20260111 14:43:01 [INFO] | .......... | .......... | .......... | .......... | .......... | .......... |
20260111 14:43:01 [INFO] | .......... | .......... | **........ | .......... | .......... | *****..... |
20260111 14:43:01 [INFO] | .......... | ***....... | ****...... | ..**...... | ******.... | ..**.*.... |
20260111 14:43:01 [INFO] | ****...... | ..**...... | ....*..... | **..***... | **..**.... | ......*... |
20260111 14:43:01 [INFO] | **..*..... | ...**..... | ...*.***.. |            |            |            |
20260111 14:43:01 [INFO] | .....*.... |            |            |            |            |            |
...
This does however exhaust pretty quickly (unsolvable).
amling
Posts: 1212
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling »

Sokwe wrote: December 28th, 2025, 6:23 pm It's perhaps worth noting that the 23c/69 fuse can also be supported by gliders:

Code: Select all

x = 106, y = 292, rule = B3/S23
105bo$103b2o$104b2o38$87bo$86bo$86b3o39$69bobo$69b2o$70bo38$52bo$52bob
o$52b2o38$36bo$34b2o$35b2o17$22bo$21b3o$20b2o2bo4$19bo18b2o$20b2o16b2o
b2o$20b4o2b2o4b2o4b2o2b4o$21b2o3bo5b2ob2o4bo4bo$24bobobo3bo2b2o7b2o$
19bobob2o4bo5b2o$21bo3bo$7bo11b3o$5b4o$b2ob2o3bo3bo$b2o2bo5b4o$o2bo7bo
3bo$9bo2bobo$10bo5$21b3o4$19b2o$19b2o5$23b2o$23b2o2$30bo11b2o5b3o9b2o$
29b3o10b2ob2obobob2o7b2ob2obo$28bo2b2o8bobo2bobobo3bo4b2o3bob3o$27b3ob
2o8bo2bo3b2obobo4bobobob2o3bo$28b5o7bo2b4obobo5b3obob3o3bo$30bo12bob2o
bobo2b2ob2o2bo3bo$40bo4b4o6b2o2bo2b2o$39b3o9bo4bo5b3o$37b2o3bo6bo6bo3b
2o2b2o$22bo14b3o3b2o2bo8b2o3b2o$22bo15b2o3bo12bo4b2ob2o$22bo33bo3$19b
2o$19b2o3$31bo2b3o$21b2o8bo$21b2o7b5o3bo$33b2o3bo$33b2o3bo$30b3o2bo$
31b5o$31b3obo7$22b2o$21bo$22b2o$23b2o3b2o$22b3o5bo$23bobo3b2o$24bo3b3o
$29b2o$26b2o2bo$25b2o$21b2o2b2ob2o$21b2o4bo13$42b2o5b3o9b2o$42b2ob2obo
bob2o7b2ob2obo$41bobo2bobobo3bo4b2o3bob3o$41bo2bo3b2obobo4bobobob2o3bo
$40bo2b4obobo5b3obob3o3bo$43bob2obobo2b2ob2o2bo3bo$40bo4b4o6b2o2bo2b2o
$39b3o9bo4bo5b3o$37b2o3bo6bo6bo3b2o2b2o$37b3o3b2o2bo8b2o3b2o$38b2o3bo
12bo4b2ob2o$56bo$27b5o$26bo$25bo8b2o$24bob2obo5bo$25bo4b2o4b2o$31bo2bo
b2o$35b2o!
It's an extremely long shot, but I'm wondering if LLSSS could find a p3 edge-repair spaceship capable of replacing the blocks in the 23c/69 fuse directly.
Long shot indeed.

I was uncomfortable trying to examine just a subset of the 69 generations and so had to do a great deal of hacking to get 23c69-s2s runnable. I don't think any of it is worth publishing as it's quite a mess and sprays a great deal of giant integer (U512) scalar work all over the place.

Even with that done I could not get anything even remotely resembling a viable search. The problem is where the c/3 ship would have to be to interact where the block does would also collide with the center mess in several other places. I can of course model this, putting wildcards in to allow the c/3-most-of-the-time ship to edge repair itself somehow several times but I was not able to get any combination to actual get anywhere.
Sokwe
Moderator
Posts: 3375
Joined: July 9th, 2009, 2:44 pm

Re: amling search program principles discussion / brain dump

Post by Sokwe »

amling wrote: December 18th, 2025, 4:10 pm I have cleaned up slightly the hacky cut of MDSE V2 WCAF to a more general "--filters", although only wcaf, acaf, and bcaf are included for the moment. Next up is similar benchmarking with a search that actually uses bcaf (I believe wcaf perf will be affected similarly).
Is this available online? I tried the 20251216-mdse-v2-wcaf-demo-01 branch, but I couldn't tell how to get the wcaf filter to work with the llsss-mdse-v2 option.
-Matthias Merzenich
amling
Posts: 1212
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling »

Sokwe wrote: January 13th, 2026, 7:11 pm
amling wrote: December 18th, 2025, 4:10 pm I have cleaned up slightly the hacky cut of MDSE V2 WCAF to a more general "--filters", although only wcaf, acaf, and bcaf are included for the moment. Next up is similar benchmarking with a search that actually uses bcaf (I believe wcaf perf will be affected similarly).
Is this available online? I tried the 20251216-mdse-v2-wcaf-demo-01 branch, but I couldn't tell how to get the wcaf filter to work with the llsss-mdse-v2 option.
The benchmarking on it is still a WIP and I hadn't pushed it. The branch I'm benchmarking can (just now) be found as "20251218-mdse-55" on codeberg. As of that branch "--filters bcaf" e.g. should work with "llsss-mdse-v2" (fixed board searches with MDSE V2). If you take it for a spin I would love to hear as much detail as you can spare the time to document.

I'm still waiting to collect and really analyze this next round of benchmarking but it's looking decent. There are definitely some parts that are much slower (definitely over 3x), but the parts that dominate large searches are actually maybe even less bad than 3x. The latest (biggest) search set to complete was 233101.338760189s over 102123.037487896s which is only 2.28255391236103x (sample size of one). Obviously this is a fairly long search on a fairly beefy box, but most of my searches these days are such. TBD more samples and more detailed analysis (what I ran, what phases are better/worse, etc.).
User avatar
winston
Posts: 7
Joined: December 1st, 2020, 1:26 pm

Re: amling search program principles discussion / brain dump

Post by winston »

Here is a 2c/5 agar-crawler partial from the following search:

./target/release/rlife llsss-recentering-wao \
--rule 'B3/S23' \
--bg-agar vertical-stripes \
--ends even,odd \
--pre-reify-autochoke 600GB \
2c5-s2s '@bg' 21

.. with JCOL_V2

Code: Select all

x = 45, y = 38, rule = B3/S23:T45,38
45o2$45o2$45o$24bo$23o2b3ob16o$24bobobo$16o2b3o2b2ob2obob14o$15bobo2bo
3bobob2ob2o$18obo4bobo7b2o2b7o$11bo3b2o5bobobobob2o4b2o3bo2bo$9o2bobo
2bob2o3b2obobob2ob2o2b2o$9bobob2obob2o3bo2bobo3bobo3bob2o2bo$9o2bo3b4o
2bobob2ob2o7b2o5bo$11bo9bob2o7b2o2b2obobob2o$11o10bo8bobo2bobobobo$27b
o5bo3bobobobo$12o3b4o4bobo2b5o3b2o5bo$21bo5b3obob2o3bo2bo$15o3b4obob4o
4b3o2bo4bo$24bo3bo6b2o2bobob2o$25o2bo4b2o2bo3bo2bo$29b2o12b2o$31o3bo7b
2o$36b5o3bo$37obo2b2o$37bobo2b2o$38obo3bo$43b2o$43o2$45o2$45o2$45o!
Would it be possible to vary the branches that are pruned during the autochoke so that I can search a different space with the same parameters?
John Winston Garth
amling
Posts: 1212
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling »

winston wrote: February 25th, 2026, 2:17 pm --rule 'B3/S23'
As an extremely minor note, this rule is the default and could be omitted.
winston wrote: February 25th, 2026, 2:17 pm Would it be possible to vary the branches that are pruned during the autochoke so that I can search a different space with the same parameters?
The short answer to that "not yet". Current "--pre-reify-autochoke" default (only) implementation is (supposed to be) indeed deterministic although it might be chaotic enough (sensitive to exact search state contents) that you could end up "in a different branch" from minor changes like expanding mid_steps by 1. Back when Sokwe and I were first discussing what lead to the current autochoke algorithm, the original question was the generic "sacrifice completeness for memory size" but no ultimately workable randomness-using ideas came to us at the time.

You could try to do something like pick a random bcol position (a strip of two columns of partial pattern) to drop, prune state by connectedness, and repeat until it's small enough, but the problem is if you get unlucky you may pick a bcol position that is used in all or nearly all state. You can of course pile hacks on hacks like pick several and take the one that is the smallest reduction or the like, but I'm not very optimistic enough about how well it would work out and have never made the time to try to implement anything.

I am certainly amenable to the notion of other autochoke algorithms I just don't have any good ideas. I guess I will try to think on it some more.
winston wrote: February 25th, 2026, 2:17 pm ...2c/5 agar-crawler...
My own thoughts on this particular goal (2c/5 perpendicular stripes crawler) had been to search f2b and partials were always so very badly what I would call "pyramidal" that I sort of assume there aren't any finite patterns. s2s can be especially misleading as sometimes long partials can exist even when it can be analytically shown there are no finite patterns. For example, I believe searching 2c/3 s2s will have sizable, sort-of-healthy-seeming partials. Of course no one is anywhere close to knowing for 2c/5 and maybe you can find something where no one else is digging.
winston wrote: February 25th, 2026, 2:17 pm ./target/release/rlife llsss-recentering-wao \
--rule 'B3/S23' \
--bg-agar vertical-stripes \
--ends even,odd \
--pre-reify-autochoke 600GB \
2c5-s2s '@bg' 21

.. with JCOL_V2
I have so many questions about your journey. If you could spare the time to write more about what's going on over there I would love to hear it. Mainly I'm wondering:

(*) For 600 GB autochoke what did VmPeak hit? I'm assuming something like 1.5 TB. What kind of computer is this? Is that swap or actual memory?

(*) Did you run jcols V2 pre-emptively, or after a crash overflowing u32 for the default? I guess it's sort of academic, but I would be tickled to know someone else was forced to, something I absolutely did not expect to happen when I wrote it.

(*) The combination of finite mid_steps and autochoke is interesting, meaning it always limits to 21-ish (it's complicated between extra middle step and chimerism over-accepting), but will restrict further if it thinks it has to. I had been running most of my autochoke searches with mid_steps=XX (unlimited) and letting autochoke effectively decide the limit at every step but I have mixed feelings about how that's been going. Autochoke is sort of a new feature and we have no idea what best practices should be and so I'm definitely interested in how it's gone for you and how you chose those search parameters.

(*) Even more generally how did searching with LLSSS go? Did you start from the tutorial? Reading this thread? Something else? Fresh eyes often see things acclimated eyes do now and so your observations could be especially valuable.
amling
Posts: 1212
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling »

amling wrote: February 25th, 2026, 6:49 pm You could try to do something like pick a random bcol position to drop, prune state...

...I guess I will try to think on it some more.
I barely finished writing the last response before thinking that maybe we could do the reverse: pick a bcol position and filter to state that includes it. Then I realized we could choose between the two, and finally I realized that you could think of it as a pivot instead and imagine it as sort of splitting up the search space. The "sort of" is doing some heavy lifting here and there are sorts of inexactness of mid_steps that would get lost...

For completeness I am imagining taking an in-memory state, picking a pivot bcol position, and considering the two possible filterings of it: (a) stripped to include only bcol positions reachable from the pivot, i.e. part of a partial containing it and (b) stripped to include only bcol positions reachable from both edges without the pivot, i.e. part of a partial not containing it. These do exhaust the state in the sense that any partial at that depth will continue to be a partial in one (or both) of the reductions. However two separate partials could be split between them and a later (longer) partial that would get lucky chimerizing the two might no longer be findable from either reduced state. This however might be acceptable as all patterns meeting the strictest bound (namely covered by mid_steps at each depth) will still be findable and for mid_steps=XX this is still all patterns.

This elides some details about the distinction between bcol positions and jcol positions as well as the iffy case of what happens when all possible partials include the pivot, but I think the jcol business will be equally calculable and the case of the forced pivot can be ignored (just pick a different pivot until one works).

Now, how do we actually run this? If you just pick random pivots (but always take the larger of the two possible reductions) you could maybe use this to produce different reductions for repeat searches but still behave somewhat like current autochoke. Something even fancier would be to try to in some sense fully exhaust the search space by considering a deterministic (but presumably pseudorandom) tree of pivots. Maybe you'd tell it the last path that had completed and it would take the lexically next and you'd do so repeatedly. Maybe you'd have it manage a state file where each time it drills down to the next "biggest" non-completed subtree (repeating the tree-defined pivots to get there) and then picks pivots for biggest of the two sides from there on.

The state file tree walker version is especially tantalizing because it both picks the biggest (in some sense) remaining part of the search space each time, but also it will likely be able to exhaust the search space given enough runs and enough time (modulo the unlikely but technically possible edge case of being unable to find a nontrivial pivot but somehow also be threatening to fill memory at the time).

It's a little late here so I am unlikely to implement any of this tonight. Hopefully I will find some time tomorrow.
User avatar
winston
Posts: 7
Joined: December 1st, 2020, 1:26 pm

Re: amling search program principles discussion / brain dump

Post by winston »

amling wrote: February 25th, 2026, 6:49 pm (*) For 600 GB autochoke what did VmPeak hit? I'm assuming something like 1.5 TB. What kind of computer is this? Is that swap or actual memory?
VmPeak hit 1.54TB. I'm running the search on ASA-X which I have access to through my university. 1.5TB of memory + 400GB of swap is what I'm working with. I found when VmPeak hit around 1.6TB the search would stall out.. slowly bleeding CPU usage until death. I didn't really investigate, just found the sweet spot of what works.
amling wrote: February 25th, 2026, 6:49 pm (*) Did you run jcols V2 pre-emptively, or after a crash overflowing u32 for the default? I guess it's sort of academic, but I would be tickled to know someone else was forced to, something I absolutely did not expect to happen when I wrote it.
I found it after the search was crashing.
amling wrote: February 25th, 2026, 6:49 pm (*) The combination of finite mid_steps and autochoke is interesting, meaning it always limits to 21-ish (it's complicated between extra middle step and chimerism over-accepting), but will restrict further if it thinks it has to. I had been running most of my autochoke searches with mid_steps=XX (unlimited) and letting autochoke effectively decide the limit at every step but I have mixed feelings about how that's been going. Autochoke is sort of a new feature and we have no idea what best practices should be and so I'm definitely interested in how it's gone for you and how you chose those search parameters.
I was thinking mid_steps was like a width. I started with 13, 14.. and the search took longer and longer. I have 360hrs of runtime per job and 21 took maybe 240 hours? 30 minutes per choke with those settings:

Code: Select all

20260219 10:24:16 [INFO] Autochoke SEMSV1 running: memory 600.20 GB > limit 600.00 GB
20260219 10:55:13 [INFO] Autochoke SEMSV1 rejecting 27 -> 14105433738 / 62530512773 -> 600.10 GB [memory 600.10 GB > limit 600.00 GB]
20260219 10:55:13 [INFO] Autochoke SEMSV1 keeping 26 -> 14099623779 / 62468853013 -> 599.57 GB
amling wrote: February 25th, 2026, 6:49 pm (*) Even more generally how did searching with LLSSS go? Did you start from the tutorial? Reading this thread? Something else? Fresh eyes often see things acclimated eyes do now and so your observations could be especially valuable.
I started by asking Sokwe on Discord about a year ago for an example command for finding 2c/3 crawlers. I just tinkered from there. I'm not sure if I have any useful experiential insight. The output looked foreign when I first saw it. It took me a bit to feel like I had a rudimentary understanding of what it meant. I had to figure out that I needed to set HALT_ON_END and the JCOL V2 flags, which was sort of stressful. I was worried I would find something and it get buried in debug. My method of pasting partials into Golly is to copy the debug from my terminal, then paste it into Brackets to be able to column select the pattern, which is sort of annoying.
John Winston Garth
amling
Posts: 1212
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling »

winston wrote: February 26th, 2026, 2:18 pm I'm running the search on ASA-X which I have access to through my university.
Ooooo. I'm so jealous! This also means you are now running LLSSS with the most memory, a title I thought for sure I would never lose.
winston wrote: February 26th, 2026, 2:18 pm I was thinking mid_steps was like a width.
It's not altogether unlike a width. There is some explanation somewhere up thread about how it differs from human consideration of width and it's probably best to think of it more as a fuzzy single parameter search size slider.
winston wrote: February 26th, 2026, 2:18 pm I had to figure out that I needed to set HALT_ON_END and the JCOL V2 flags, which was sort of stressful. I was worried I would find something and it get buried in debug.
JCOL V2 is a special nightmare and I'm not sure what to do to improve it. Its performance is worse so I don't want to promote it to default and it's really only needed for these insanely large machines.

The concern about losing results I am quite sympathetic to although I struggle to think of any way for default settings to address it without compromising the amount of information output. Failing that unificiation, someone has to run non-default settings, either me remembering to turn on full blast output everywhere I run searches or random new users somehow knowing to turn it down to quiet output.

My own solution to the problem of noticing results is that as the author I know that "grep -l '\<End' **/*.log*" (zsh) will find any in my current directory/project, but that of course is a safety net new users could not reasonably know.

Maybe we could keep some sort of statistics of results found that we output (the counts) when the search finishes? It requires sorting all printouts strictly into whether or not they count and some, like LlsssEndsPd, are questionable. I guess you could tag that stats with type (solving the does-it-count problem), fill zero stats, and give the ends vanity names, hoping for output as nice as "found 3 2-fold PD results and 0 normal results" (here I'm imagining that we're going to vanity name the defaulted bg ends "normal"). It is also a big problem that crashed searches (e.g. oomkills or hitting ulimit) won't output and I don't really see any way to fix that other than outputting the stats after every round which seems maybe a bit verbose.

If we did this then halt on ends might get moved to the same place (checked at end of round when stats output) and be able to be done by type (presumably with an "ALL" for any).
winston wrote: February 26th, 2026, 2:18 pm My method of pasting partials into Golly is to copy the debug from my terminal, then paste it into Brackets to be able to column select the pattern, which is sort of annoying.
I had debated having alternate output formats, although given that RLE is completely unintelligible to humans I cannot imagine wanting it in the logs all the way.

We could try something like having all steps that output partials (or maybe just main partials?) track their last output and on search completion repeating that last partial but in RLE (and I assume just one generation more or less at random). This would be aiming to support the most common case of wanting to share just the last partial. Of course this has many problems like crashed searches not getting it, how do we re-encode the rule as an RLE rule, would we do "history" variant instead (and then include all generations), etc.
amling
Posts: 1212
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling »

amling wrote: February 26th, 2026, 3:49 pm Maybe we could keep some sort of statistics of results found...
I sketched a cut of this...

A search that finds nothing and shows that final tally in the very last few lines:

Code: Select all

$ rlife llsss-recentering-wao c4d-down '@bg' 03
...
20260226 15:21:22 [INFO] Total: 309.407951ms (1.629133s user, 117.532ms sys)
20260226 15:21:22 [INFO] Final results: 0 normal
20260226 15:21:22 [INFO] Done
$
A search that finds something (and continues on forever, finding more and more and showing higher and higher cumulative totals):

Code: Select all

$ rlife llsss-recentering-wao c4d-down '@bg' 04 |& less -nS
...
20260226 15:22:00 [INFO] Results: 0 normal
20260226 15:22:00 [INFO] Completed w_pos 2[3]: 5.21 KB, 19.893078ms
...
20260226 15:22:00 [INFO] Results: 0 normal
20260226 15:22:00 [INFO] Completed w_pos 3[0]: 6.84 KB [+179.63%], 23.705756ms [+30.97%]
...
20260226 15:22:10 [INFO] Results: 0 normal
20260226 15:22:10 [INFO] Completed w_pos 3[1]: 8.55 KB [+143.75%], 10.269907982s [+199.43%]
...
...
20260226 15:22:39 [INFO] Results: 0 normal
20260226 15:22:39 [INFO] Completed w_pos 7[2]: 6.27 KB [+92.27%], 258.145773ms [+6.66%]
...
20260226 15:22:40 [INFO] End [thinnest] ("LlsssEndsAgar", "zero"):
20260226 15:22:40 [INFO] | ZZZZZZZ | ZZZZZZZ | ZZZZZZZ | ZZZZZZZ |
20260226 15:22:40 [INFO] | ....... | ....... | ....... | ....... |
20260226 15:22:40 [INFO] | ....... | ....... | ....... | ....... |
20260226 15:22:40 [INFO] | ....... | ....... | ...*... | ..**... |
20260226 15:22:40 [INFO] | ...**.. | ..***.. | ..**... | ..*.*.. |
20260226 15:22:40 [INFO] | ..**... | ..*.... | ..*.*.. | ..*.... |
20260226 15:22:40 [INFO] | ....*.. | ...*... | ....... | ....... |
20260226 15:22:40 [INFO] | ....... | ....... | ....... | ....... |
20260226 15:22:40 [INFO] | ....... | ....... | ....... | ....... |
...
20260226 15:22:40 [INFO] Results: 1 normal
20260226 15:22:40 [INFO] Completed w_pos 7[3]: 10.21 KB [+149.23%], 421.986328ms [-59.36%]
...
A search with multiple ends, that finds something, but eventually terminates:

Code: Select all

$ rlife llsss-recentering-wao --rule 'B2/S' 2c6-f2b '@bg' --ends bg,pd_lite:2 13
...
20260226 15:34:53 [INFO] Completed w_pos 6[0]: 304 B, 8.993688ms
...
20260226 15:34:53 [INFO] End LlsssEndsPdLite depth 7:
20260226 15:34:53 [INFO] |       |       |       |       |       | ZZZZZ |
20260226 15:34:53 [INFO] |       |       | ZZZZZ | ..... | ..... | ..... |
20260226 15:34:53 [INFO] | ..... | ..... | ..... | ..... | ..... | ..... |
20260226 15:34:53 [INFO] | ..... | ..... | ..... | ..*.. |       |       |
20260226 15:34:53 [INFO] | ..*.. |       |       |       |       |       |
20260226 15:34:53 [INFO] Results: 0 LlsssEndsAgar(zero), 1 LlsssEndsPdLite(2)
20260226 15:34:53 [INFO] Completed w_pos 6[1]: 568 B, 9.71124ms
...
20260226 15:34:53 [INFO] Results: 0 LlsssEndsAgar(zero), 1 LlsssEndsPdLite(2)
20260226 15:34:53 [INFO] Completed w_pos 7[0]: 1.37 KB [+128.64%], 7.106802ms [-23.44%]
...
20260226 15:34:53 [INFO] End LlsssEndsPdLite depth 8:
20260226 15:34:53 [INFO] |       |       |       |       |       | ZZZZZ |
20260226 15:34:53 [INFO] |       |       | ZZZZZ | ..... | ..... | ..... |
20260226 15:34:53 [INFO] | ..... | ..... | ..... | ..... | ..... | ..... |
20260226 15:34:53 [INFO] | ..... | ..... | ..... | ..*.. | ..... |       |
20260226 15:34:53 [INFO] | ..*.. | ..... |       |       |       |       |
20260226 15:34:53 [INFO] Results: 0 LlsssEndsAgar(zero), 2 LlsssEndsPdLite(2)
20260226 15:34:53 [INFO] Completed w_pos 7[1]: 3.87 KB [+149.82%], 7.91899ms [-20.33%]
...
20260226 15:34:53 [INFO] Results: 0 LlsssEndsAgar(zero), 2 LlsssEndsPdLite(2)
20260226 15:34:53 [INFO] Completed w_pos 8[0]: 7.76 KB [+140.07%], 8.409899ms [+16.80%]
...
20260226 15:35:05 [INFO] Total: 11.845460563s (115.885417s user, 12.264517s sys)
20260226 15:35:05 [INFO] Final results: 0 LlsssEndsAgar(zero), 9 LlsssEndsPdLite(2)
20260226 15:35:05 [INFO] Done
I've only given a full-on vanity name to the default BG ends ("normal" in this case). My assumption is anyone explicitly configuring ends will hopefully understand what is happening.

I've included some configuration details in the string names (like PD division, agar name, or reflect symmetry type), but not all of them (e.g. not EDBV3 file path). If we find ends bucketing too much or too little we can adjust.

The counts are somewhat of a messy lie. For fixed board search SSM ends they are accurate. For recentering SSM ends they are one per "thinnest" display which is neither how many expansion steps had hits (as it can trigger multiple times per depth depending on implementation details of SSM ends state machine), nor once per actual pattern (as each such print can correspond to multiple or even infinitely many patterns). For non-SSM ends all bets are off and it's up to the specific code to account (maxpop is one per pattern, pd_lite and pd_rotor_tree are one per printout).

Of course these details aren't set in stone, but I think they're a reasonable starting point. If we don't have any immediate ideas for improvement I will probably merge it soon and begin baking it in real world searches.

TBD taking over halt-on-ends behaviour.
amling
Posts: 1212
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling »

amling wrote: February 26th, 2026, 3:49 pm We could try something like ... on search completion repeating ... last partial but in RLE...
I sketched a cut of this as well, opting for "history" variant with all generations and assuming rule name for RLE is equal to whatever went into "--rule" plus "History". I tested briefly that life viewer liked this for hex rules. What happens for "V" rules of "MAP" rules may or may not be useful.

An example for fixed board:

Code: Select all

$ rlife llsss c3-f2b '@bg:13' --filters wcaf
...
20260226 15:49:50 [INFO] Last firstest partial RLE:
20260226 15:49:50 [INFO] x = 49, y = 16, rule = LifeHistory
20260226 15:49:50 [INFO] F.13B.F.13B.F.13B.F$F.13B.F.13B.F.13B.F$F.5BA7B.F.5BA7B.F.4B3ABA4B.F$
20260226 15:49:50 [INFO] F.4BABAB2A3B.F.4B2AB3A3B.F.3BAB2AB2A3B.F$F.3BA4B2A3B.F.3B2A5BA2B.F.3B
20260226 15:49:50 [INFO] 5A2BA2B.F$F.3BA3B3A3B.F.7BABA3B.F.5BA7B.F$F.13B.F.3B2ABA6B.F.3B2ABABA
20260226 15:49:50 [INFO] 4B.F$F.3B2AB2A5B.F.3B2AB2A5B.F.2BA3BA6B.F$F.2BABABA6B.F.2BABABABA4B.F
20260226 15:49:50 [INFO] .2BABABABA4B.F$F.2BABABAB2A3B.F.2BA6BA3B.F.3BABAB3A3B.F$F.3B7A3B.F.6B
20260226 15:49:50 [INFO] A2BA3B.F.13B.F$F.4BA8B.F.6BA6B.F.5BAB2ABA2B.F$F.4BA3B2A3B.F.3B2A3B3A
20260226 15:49:50 [INFO] 2B.F.3B2A4BA3B.F$F.4B2A3B2A2B.F.4B2A7B.F.6B2A2BA2B.F$F.8B3A2B.F.4B2AB
20260226 15:49:50 [INFO] 2ABA2B.F.9BA3B.F$F.3BA2BABA4B.F.5BA4BA2B.F15.F!
20260226 15:49:50 [INFO] Finish: search proper -> took 3.81805154s (30.39269s user, 2.09013s sys)
...
Extracted, that's:

Code: Select all

x = 49, y = 16, rule = LifeHistory
F.13B.F.13B.F.13B.F$F.13B.F.13B.F.13B.F$F.5BA7B.F.5BA7B.F.4B3ABA4B.F$
F.4BABAB2A3B.F.4B2AB3A3B.F.3BAB2AB2A3B.F$F.3BA4B2A3B.F.3B2A5BA2B.F.3B
5A2BA2B.F$F.3BA3B3A3B.F.7BABA3B.F.5BA7B.F$F.13B.F.3B2ABA6B.F.3B2ABABA
4B.F$F.3B2AB2A5B.F.3B2AB2A5B.F.2BA3BA6B.F$F.2BABABA6B.F.2BABABABA4B.F
.2BABABABA4B.F$F.2BABABAB2A3B.F.2BA6BA3B.F.3BABAB3A3B.F$F.3B7A3B.F.6B
A2BA3B.F.13B.F$F.4BA8B.F.6BA6B.F.5BAB2ABA2B.F$F.4BA3B2A3B.F.3B2A3B3A
2B.F.3B2A4BA3B.F$F.4B2A3B2A2B.F.4B2A7B.F.6B2A2BA2B.F$F.8B3A2B.F.4B2AB
2ABA2B.F.9BA3B.F$F.3BA2BABA4B.F.5BA4BA2B.F15.F!
An example for recentering:

Code: Select all

$ rlife llsss-recentering-wao --rule 'B2/S' c4-f2b '@bg' 12
...
20260226 15:51:09 [INFO] Last thinnest partial RLE:
20260226 15:51:09 [INFO] x = 73, y = 12, rule = B2/SHistory
20260226 15:51:09 [INFO] F.15B.F.15B.F.15B.F.15B.F$F.15B.F.15B.F.15B.F.15B.F$F.6BA8B.F.5BA9B.F
20260226 15:51:09 [INFO] .6BA8B.F.5BABA7B.F$F.4BA4BA5B.F.3BABA4BA4B.F.6BA2BA5B.F.4BA2B2ABA4B.F
20260226 15:51:09 [INFO] $F.3BA7BA3B.F.4BA5BABA2B.F.3BABA3BA5B.F.4BABABA2BA3B.F$F.12BA2B.F.11B
20260226 15:51:09 [INFO] A3B.F.10BABA2B.F.4BABAB2ABA3B.F$F.15B.F.15B.F.7BA7B.F.3B2ABABA2BA3B.F
20260226 15:51:09 [INFO] $F.2BA12B.F.6BABA6B.F.3B2A2BA7B.F.2BA6BABA3B.F$F.6B3A3BA2B.F.2BAB2A9B
20260226 15:51:09 [INFO] .F.3BA3BAB3A3B.F.5BA9B.F$F.3B2A3B2A5B.F.5BA4B2A3B.F.3BA2BA8B.F.4BA4BA
20260226 15:51:09 [INFO] 5B.F$F.7BA2BA4B.F.15B.F.2BA4BA3B2A2B.F.5B2AB2A5B.F$F.2B2A11B.F17.F17.
20260226 15:51:09 [INFO] F17.F!
20260226 15:51:09 [INFO] Finish: search proper -> took 2.456857627s (19.122136s user, 1.181459s sys)
...

Code: Select all

x = 73, y = 12, rule = B2/SHistory
F.15B.F.15B.F.15B.F.15B.F$F.15B.F.15B.F.15B.F.15B.F$F.6BA8B.F.5BA9B.F
.6BA8B.F.5BABA7B.F$F.4BA4BA5B.F.3BABA4BA4B.F.6BA2BA5B.F.4BA2B2ABA4B.F
$F.3BA7BA3B.F.4BA5BABA2B.F.3BABA3BA5B.F.4BABABA2BA3B.F$F.12BA2B.F.11B
A3B.F.10BABA2B.F.4BABAB2ABA3B.F$F.15B.F.15B.F.7BA7B.F.3B2ABABA2BA3B.F
$F.2BA12B.F.6BABA6B.F.3B2A2BA7B.F.2BA6BABA3B.F$F.6B3A3BA2B.F.2BAB2A9B
.F.3BA3BAB3A3B.F.5BA9B.F$F.3B2A3B2A5B.F.5BA4B2A3B.F.3BA2BA8B.F.4BA4BA
5B.F$F.7BA2BA4B.F.15B.F.2BA4BA3B2A2B.F.5B2AB2A5B.F$F.2B2A11B.F17.F17.
F17.F!
I think about the same of this, namely if we can think of no immediate changes I will probably merge it soon and get it baking.
User avatar
Katrina
Posts: 161
Joined: September 26th, 2024, 3:23 am

Re: amling search program principles discussion / brain dump

Post by Katrina »

Why doesn't LLSSS find the weekender with this command?

Code: Select all

LLSSS_HALT_ON_ENDS=true LLSSS_MAX_TABLE_SIZE=23 ./rlife llsss 2c7-f2b @bg:11 --left-edge even --rule 'B3/S23' --filters wcaf
EDIT 1: Here is the largest partial

Code: Select all

20260309 10:58:09 [INFO] |             |             |             |             | ........... | ........... | ........... |
20260309 10:58:09 [INFO] | ........... | ........... | ........... | ........... | ........... | ........... | ........... |
20260309 10:58:09 [INFO] | ........... | ........... | ........... | ........... | ........... | ......*.... | .....***... |
20260309 10:58:09 [INFO] | ......*.... | ........... | ......*.... | ......*.... | .....***... | .....***... | ........... |
20260309 10:58:09 [INFO] | ......*.... | .....***... | .....*.*... | .....***... | ....*...*.. | .....***... | .....*.*... |
20260309 10:58:09 [INFO] | .....*.*... | .....*.*... | ....*...*.. | ....*****.. | ........... | ........... | ......*.... |
20260309 10:58:09 [INFO] | ......*.... | .....***... | ....*..*... | ....*****.. | ...*....... | ........... | ........... |
20260309 10:58:09 [INFO] | ......*.... | .....**.... | .....*.*... | ....**.*... | ........*.. | ....**..... | ....*.*.... |
20260309 10:58:09 [INFO] | .....*..... | ........... | .....**.... | .....**.... | ....***.... | ....***.... | ...*....... |
20260309 10:58:09 [INFO] | ........... | .....*..... | ........... | ........... | .....*..... | ....***.... | ...*..*.... |
20260309 10:58:09 [INFO] | ...***..... | ..*..*..... | ........... | ....*...... | ........... | ....*...... | ...*....... |
20260309 10:58:09 [INFO] | ..***...... | ........... | ...***..... | ...*..*.... | ...*.*..... | ...*.**.... | ...****.... |
20260309 10:58:09 [INFO] | ..**..*.... | ..*.**..... | ..*.***.... | ..*...*.... | ..*.***.... | ..*...*.... | ..**.**.... |
20260309 10:58:09 [INFO] | ......*.... | ..**..**... | ***....*... | ..***..**.. | ..*.**..*.. | ..*........ | ..*..*.*... |
20260309 10:58:09 [INFO] | ..*....*... | ..*.**.*... | **...*.**.. | ...*..***.. | **...**.*.. | **...***... | ......**... |
20260309 10:58:09 [INFO] | ..****.*... | ..***..*... | ..*.*...... | **.**...... | ..**....... | ***....*... | ..*....*... |
20260309 10:58:09 [INFO] | .......**.. | ......***.. | ....*.***.. | ....*****.. | ........*.. | ........... | ****...**.. |
20260309 10:58:09 [INFO] | ..**....... | ****....... | ****...*... | ****..***.. | ****....*.. | ...**..**.. | ...**...... |
20260309 10:58:09 [INFO] | **..*..**.. | ...*....... | ........... | ....*...... | ***.**.*... | ....*...... | ...**...... |
20260309 10:58:09 [INFO] | **......... | *****...... | *****...... | ....*...... | ........... | **......... | ........... |
20260309 10:58:09 [INFO] | ...**...... | ........... | ****....... | ........... | ........... | ........... | ........... |
20260309 10:58:09 [INFO] | ........... | ........... | ****....... | ........... | ........... | ........... | ........... |
20260309 10:58:09 [INFO] | ........... | *****...... | *****...... | .....*..... | ........... | ........... | *******.... |
20260309 10:58:09 [INFO] | ******..... | .....*..... | ******..... | .....*..... | .....**.... | ********... | .....**.... |
20260309 10:58:09 [INFO] | *****.*.... | ......*.... | ....*..*... | ......*.... | *****.**... | *****...... | ........... |
20260309 10:58:09 [INFO] | ****..*.... | ....****... | **..*..*... | *****.**... | ....*.**... | ***.*.**... | ....*.**... |
20260309 10:58:09 [INFO] | .......*... | ***..*.*... | **.*...**.. | ***.*...... | ....*...... | ....*.*.... | ......**... |
20260309 10:58:09 [INFO] | .....***... | ....**..*.. | .....*.**.. | ***.*...... | ..*.**..... | ***........ | ..**....... |
20260309 10:58:09 [INFO] | ...*.***... | ..**.*.*... | ..*..*.*... | .....*.**.. | **.*****... | ***....*... | ...*....... |
20260309 10:58:09 [INFO] | ..**....... | ..**..*.... | ......*.... | ....*.*.... | ....*.*.... | ..*........ | ..*...**... |
20260309 10:58:09 [INFO] | ...*....... | ...*....... | ....**..... | ....*.*.... | ...**.*.... | ...**.**... | ..******... |
20260309 10:58:09 [INFO] | ..*....*... | ..*.*.*.... | ....**..... | ....**..... | ...*..*.... | ...*..*.... | ..*........ |
20260309 10:58:09 [INFO] | ***.**.*... | ****..*.... | ........... | ....**..... | ....**..... | ...****.... | **.**.**... |
20260309 10:58:09 [INFO] | ........... | *****...... | ....*...... | ........... | ....*..*... | ***...*.... | **......... |
20260309 10:58:09 [INFO] | ...*....... | **.*....... | .......*... | .....****.. | ******..*.. | ..****.**.. | ....**..*.. |
20260309 10:58:09 [INFO] | ****..**... | **.*..***.. | **..*.***.. | *****.***.. | **......*.. | ...*..**... | ***....**.. |
20260309 10:58:09 [INFO] | ..*....**.. | .....*..*.. | **.***..... | ..**???.... | .....**.... |             |             |
20260309 10:58:09 [INFO] | ?????????.. |             |             |             |             |             |             |
edit 2: @bg:12 doesn't work either.

Code: Select all

20260309 11:25:54 [INFO] |              |              |              |              | ............ | ............ | ............ |
20260309 11:25:54 [INFO] | ............ | ............ | ............ | ............ | ............ | ............ | ............ |
20260309 11:25:54 [INFO] | ............ | ............ | ............ | ............ | ............ | ......*..... | .....***.... |
20260309 11:25:54 [INFO] | ......*..... | ............ | ......*..... | ......*..... | .....***.... | .....***.... | ............ |
20260309 11:25:54 [INFO] | ......*..... | .....***.... | .....*.*.... | .....***.... | ....*...*... | .....***.... | .....*.*.... |
20260309 11:25:54 [INFO] | .....*.*.... | .....*.*.... | ....*...*... | ....*****... | ............ | ............ | ......*..... |
20260309 11:25:54 [INFO] | ......*..... | .....***.... | ....*..*.... | ....*****... | ...*........ | ............ | ............ |
20260309 11:25:54 [INFO] | ......*..... | .....**..... | .....*.*.... | ....**.*.... | ........*... | ....**...... | ....*.*..... |
20260309 11:25:54 [INFO] | .....*...... | ............ | .....**..... | .....**..... | ....***..... | ....***..... | ...*........ |
20260309 11:25:54 [INFO] | ............ | .....*...... | ............ | ............ | .....*...... | ....***..... | ...*..*..... |
20260309 11:25:54 [INFO] | ...***...... | ..*..*...... | ............ | ....*....... | ............ | ....*....... | ...*........ |
20260309 11:25:54 [INFO] | ..***....... | ............ | ...***...... | ...*..*..... | ...*.*...... | ...*.**..... | ...****..... |
20260309 11:25:54 [INFO] | ..**..*..... | ..*.**...... | ..*.***..... | ..*...*..... | ..*.***..... | ..*...*..... | ..**.**..... |
20260309 11:25:54 [INFO] | ......*..... | ..**..**.... | ***....*.... | ..***..**... | ..*.**..*... | ..*......... | ..*..*.*.... |
20260309 11:25:54 [INFO] | ..*....*.... | ..*.**.*.... | **...*.**... | ...*..***... | **...**.*... | **...***.... | ......**.... |
20260309 11:25:54 [INFO] | ..****.*.... | ..***..*.... | ..*.*....... | **.**....... | ..**........ | ***....*.... | ..*....*.... |
20260309 11:25:54 [INFO] | .......**... | ......***... | ....*.***... | ....*****... | ........*... | ............ | ****...**... |
20260309 11:25:54 [INFO] | ..**........ | ****........ | ****...*.... | ****..***... | ****....*... | ...**..**... | ...**....... |
20260309 11:25:54 [INFO] | **..*..**... | ...*........ | ............ | ....*....... | ***.**.*.... | ....*....... | ...**....... |
20260309 11:25:54 [INFO] | **.......... | *****....... | *****....... | ....*....... | ............ | **.......... | ............ |
20260309 11:25:54 [INFO] | ...**....... | ............ | ****........ | ............ | ............ | ............ | ............ |
20260309 11:25:54 [INFO] | ............ | ............ | ****........ | ......*..... | ......*..... | **....**.... | ***..***.... |
20260309 11:25:54 [INFO] | **....*..... | *****.*..... | ****.***.... | ...*.*.*.... | ***...**.... | ..**.**.*... | ***.**...... |
20260309 11:25:54 [INFO] | ..*****..... | ......**.... | .....***.... | ***.....*... | ***.*..**... | .....*...... | .....*.*.... |
20260309 11:25:54 [INFO] | ..***..*.... | ..*......... | .....*.*.... | .....*.*.... | ...*..***... | ****..*..... | ****..*..... |
20260309 11:25:54 [INFO] | .....*...... | ....**.*.... | **....*..... | ****...*.... | .......*.... | ....**...... | .......*.... |
20260309 11:25:54 [INFO] | ***...**.... | **.....*.... | ..*****..... | *******..... | ....**..*... | ***.***.*... | ..*.*.*..... |
20260309 11:25:54 [INFO] | .....***.... | ***.*....... | ............ | ......***... | *****.*.*... | ***...*.*... | ...*..*.*... |
20260309 11:25:54 [INFO] | ...*.**..... | ..**....*... | ....*..***.. | ........*... | ....***.**.. | **....*.**.. | ..*...*.**.. |
20260309 11:25:54 [INFO] | ..**..*.**.. | ..**..*.**.. | ....*....... | ...***..*... | ...*.*...... | .....**..... | ....*.**.... |
20260309 11:25:54 [INFO] | ...*..*.**.. | ...*..*.**.. | ....*....... | ....**...... | ............ | ....**...... | ...*...*.... |
20260309 11:25:54 [INFO] | ...*.**..... | ..**....*... | ..***...**.. | ..*.*...*... | ....*.*..... | ...**.**.... | ...*..*..... |
20260309 11:25:54 [INFO] | ...***.*.... | ...*...*.... | ..**...*.... | ..*..**..*.. | ..*.****.... | ....*....... | ***.**.*.... |
20260309 11:25:54 [INFO] | **.*.***.... | .......**... | ....*.***... | ...*..*..... | ....*.**.... | ***.....*... | ..*....*.... |
20260309 11:25:54 [INFO] | ***.**.*.... | ....**...... | .......**... | .....*..*... | **.**.**.... | **....**.... | ...*.***.... |
20260309 11:25:54 [INFO] | ..*....**... | ........*... | ...*..*..... | ****...*.... | **.**....... | **.**.*..... | **.*........ |
20260309 11:25:54 [INFO] | **.**.**.... | **.****..... | ***.*....... | ..**........ | ......*.*... | ...***.*.... | ...*.*.**... |
20260309 11:25:54 [INFO] | ...*.*..*... | **...***.... | **.....*.... | ...**.***... | ....*..*.... | **.....**... | ............ |
20260309 11:25:54 [INFO] | ..*.*....... | ...***.*.... | **.*.*.**... | ***......... | ***.....*... | ***.*.***... | ..*...*.*... |
20260309 11:25:54 [INFO] | ......*.*... | ..**...*.... | .......**... | ..*.....*... | ..**.*.*.... | ............ | **.*.*..*... |
20260309 11:25:54 [INFO] | ***....*.... | ****.**..*.. | **....*..... | ....***.*... | ...**....... | ....*...*... | **.*...**... |
20260309 11:25:54 [INFO] | ...**.*.**.. | ...*...**... | ...***..*... | ....******.. | ***.....**.. | ***.*..**... | .....*.***.. |
20260309 11:25:54 [INFO] | **.......... | ..*...**.... | .....*..**.. | ****........ | ...*..**.... |              |              |
20260309 11:25:54 [INFO] | ...****..... |              |              |              |              |              |              |
(I have to make the text large because people don't listen to me ever)
amling
Posts: 1212
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling »

Sylvani wrote: March 9th, 2026, 12:00 pm Why doesn't LLSSS find the weekender with this command?
My own width '@bg:11' search produces the same exact last "Unique:" view:

Code: Select all

$ rlife llsss 2c7-f2b '@bg:11' --left-edge even --filters wcaf
Width 12 with a "cheating" constraint finds the ship:

Code: Select all

$ cat cheat.cstr
|              |              |              |              | ............ | ............ | ............ |
| ............ | ............ | ............ | ............ | ............ | ............ | ............ |
| ............ | ............ | ............ | ............ | ............ | .......*.... | ......***... |
| .......*.... | ............ | .......*.... | .......*.... | ......***... | ......***... | ............ |
| .......*.... | ......***... | ......*.*... | ......***... | .....*...*.. | ......***... | ......*.*... |
| ......*.*... | ......*.*... | .....*...*.. | .....*****.. | ............ | ............ | .......*.... |
| .......*.... | ......***... | .....*..*... | .....*****.. | .....*...... | ............ | ............ |
| .......*.... | **....**.... | **....*.*... | **......*... | **.......*.. | **...*...... | ****.**..... |
| ***...*..... | ..*......... | **...***.... | **...***.... | ..*..***.... | ..****.*.... | ............ |
| ***......... | ....*.*..... | ....*....... | ..*.*....... | ..**.**..... | ..****.*.... | ..*..*...... |
| ...****..... | ******...... | ***..*...... | ..*......... | ............ | ............ | ............ |
| ............ | ...*........ | **.......... | ....*....... | ............ | ****........ | *****....... |
| ....*....... | ...*........ | ..***....... | ****........ | *****....... | ...**....... | **.......... |
| ..**........ | ...*........ | ............ | ...*........ | **.*........ | ...**....... | ...**....... |
| ............ | ............ | ............ | ............ | ............ | ............ | ............ |
| ............ | ............ | ............ | ............ | ............ | ............ | ............ |
| ............ | ............ | ............ |              |              |              |              |
$ rlife llsss 2c7-f2b '@bg:12' --left-edge even --filters wcaf --constraint grid:cheat.cstr:none --llsss-env LLSSS_HALT_ON_ENDS=true
...
20260309 18:22:30 [INFO] End (("LlsssEndsAgar", "zero")):
20260309 18:22:30 [INFO] |              |              |              |              | ............ | ............ | ............ |
20260309 18:22:30 [INFO] | ............ | ............ | ............ | ............ | ............ | ............ | ............ |
20260309 18:22:30 [INFO] | ............ | ............ | ............ | ............ | ............ | .......*.... | ......***... |
20260309 18:22:30 [INFO] | .......*.... | ............ | .......*.... | .......*.... | ......***... | ......***... | ............ |
20260309 18:22:30 [INFO] | .......*.... | ......***... | ......*.*... | ......***... | .....*...*.. | ......***... | ......*.*... |
20260309 18:22:30 [INFO] | ......*.*... | ......*.*... | .....*...*.. | .....*****.. | ............ | ............ | .......*.... |
20260309 18:22:30 [INFO] | .......*.... | ......***... | .....*..*... | .....*****.. | .....*...... | ............ | ............ |
20260309 18:22:30 [INFO] | .......*.... | **....**.... | **....*.*... | **......*... | **.......*.. | **...*...... | ****.**..... |
20260309 18:22:30 [INFO] | ***...*..... | ..*......... | **...***.... | **...***.... | ..*..***.... | ..****.*.... | ............ |
20260309 18:22:30 [INFO] | ***......... | ....*.*..... | ....*....... | ..*.*....... | ..**.**..... | ..****.*.... | ..*..*...... |
20260309 18:22:30 [INFO] | ...****..... | ******...... | ***..*...... | ..*......... | ............ | ............ | ............ |
20260309 18:22:30 [INFO] | ............ | ...*........ | **.......... | ....*....... | ............ | ****........ | *****....... |
20260309 18:22:30 [INFO] | ....*....... | ...*........ | ..***....... | ****........ | *****....... | ...**....... | **.......... |
20260309 18:22:30 [INFO] | ..**........ | ...*........ | ............ | ...*........ | **.*........ | ...**....... | ...**....... |
20260309 18:22:30 [INFO] | ............ | ............ | ............ | ............ | ............ | ............ | ............ |
20260309 18:22:30 [INFO] | ............ | ............ | ............ | ............ | ............ | ............ | ............ |
20260309 18:22:30 [INFO] | ............ | ............ | ............ |              |              |              |              |
20260309 18:22:30 [WARNING] Halting (reason: LLSSS_HALT_ON_ENDS)...
...
That is strong evidence that the unconstrained should (in a correctness sense) find it, but perhaps only moderate evidence that it will.

I'm running the unconstrained width 12 search now, but it is quite slow and taking quite a bit of memory (~18 minutes and ~32 GB so far). You might take this moment to super duper double check what command you actually ran (you did not post it, presumably it's the same as 11 but with 11 replaced with 12). Failing that and assuming my search does find the ship, we might start comparing "Cols sizes" outputs, or ideally you can just upload the entire log and I will go digging. You might also provide what exact version of the codebase you're running. My reproductions here have been with ed0ccb375687.
Sokwe
Moderator
Posts: 3375
Joined: July 9th, 2009, 2:44 pm

Re: amling search program principles discussion / brain dump

Post by Sokwe »

amling wrote: March 9th, 2026, 9:30 pm That is strong evidence that the unconstrained should (in a correctness sense) find it, but perhaps only moderate evidence that it will.

I'm running the unconstrained width 12 search now, but it is quite slow and taking quite a bit of memory (~18 minutes and ~32 GB so far). You might take this moment to super duper double check what command you actually ran (you did not post it, presumably it's the same as 11 but with 11 replaced with 12). Failing that and assuming my search does find the ship, we might start comparing "Cols sizes" outputs, or ideally you can just upload the entire log and I will go digging. You might also provide what exact version of the codebase you're running. My reproductions here have been with ed0ccb375687.
There was some discussion of this on Discord. They were using autochoke 8 GB for the `@bg:12` search, which is presumably why it didn't find the Weekender. I already tested the search with their exact command (as they wrote it, but with `@bg:12` instead of `@bg:11`) and got the weekender after ~96 minutes with vmpeak ~32 GB.
-Matthias Merzenich
amling
Posts: 1212
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling »

And my unconstrained width 12 search just found the weekender after ~36 minutes.
Sokwe wrote: March 9th, 2026, 9:42 pm They were using autochoke 8 GB for the `@bg:12` search
Thrilling. Thanks for catching me up.

Sylvani, there is no substitute for data! When you are asking for help on the internet please provide all inputs. All files, all commands, everything.
User avatar
Katrina
Posts: 161
Joined: September 26th, 2024, 3:23 am

Re: amling search program principles discussion / brain dump

Post by Katrina »

amling wrote: March 9th, 2026, 9:48 pm Sylvani, there is no substitute for data! When you are asking for help on the internet please provide all inputs. All files, all commands, everything.
IIRC I did set the autochoke value in the command I posted.
Anyways, my laptop only has 32GB available with 5-10GB in use at all times, and I didn't want to risk it. It does have a lot (an unnecessary 383 GB) of swap. I'll test it again without the autochoke setting and edit this post once it's complete. I'll post all my findings shortly.

EDIT:
It's complete. It did find the weekender after 60 minutes.

Code: Select all

LLSSS_HALT_ON_ENDS=true LLSSS_MAX_TABLE_SIZE=23 ./rlife llsss 2c7-f2b @bg:12 --left-edge even --filters wcaf | tee log.txt

Code: Select all

20260310 08:48:09 [INFO] End (("LlsssEndsAgar", "zero")):
20260310 08:48:09 [INFO] |              |              |              |              | ............ | ............ | ............ |
20260310 08:48:09 [INFO] | ............ | ............ | ............ | ............ | ............ | ............ | ............ |
20260310 08:48:09 [INFO] | ............ | ............ | ............ | ............ | ............ | .......*.... | ......***... |
20260310 08:48:09 [INFO] | .......*.... | ............ | .......*.... | .......*.... | ......***... | ......***... | ............ |
20260310 08:48:09 [INFO] | .......*.... | ......***... | ......*.*... | ......***... | .....*...*.. | ......***... | ......*.*... |
20260310 08:48:09 [INFO] | ......*.*... | ......*.*... | .....*...*.. | .....*****.. | ............ | ............ | .......*.... |
20260310 08:48:09 [INFO] | .......*.... | ......***... | .....*..*... | .....*****.. | .....*...... | ............ | ............ |
20260310 08:48:09 [INFO] | .......*.... | **....**.... | **....*.*... | **......*... | **.......*.. | **...*...... | ****.**..... |
20260310 08:48:09 [INFO] | ***...*..... | ..*......... | **...***.... | **...***.... | ..*..***.... | ..****.*.... | ............ |
20260310 08:48:09 [INFO] | ***......... | ....*.*..... | ....*....... | ..*.*....... | ..**.**..... | ..****.*.... | ..*..*...... |
20260310 08:48:09 [INFO] | ...****..... | ******...... | ***..*...... | ..*......... | ............ | ............ | ............ |
20260310 08:48:09 [INFO] | ............ | ...*........ | **.......... | ....*....... | ............ | ****........ | *****....... |
20260310 08:48:09 [INFO] | ....*....... | ...*........ | ..***....... | ****........ | *****....... | ...**....... | **.......... |
20260310 08:48:09 [INFO] | ..**........ | ...*........ | ............ | ...*........ | **.*........ | ...**....... | ...**....... |
20260310 08:48:09 [INFO] | ............ | ............ | ............ | ............ | ............ | ............ | ............ |
20260310 08:48:09 [INFO] | ............ | ............ | ............ | ............ | ............ | ............ | ............ |
20260310 08:48:09 [INFO] | ............ | ............ | ............ |              |              |              |              |
20260310 08:48:09 [WARNING] Halting (reason: LLSSS_HALT_ON_ENDS)...
20260310 08:48:09 [INFO] VmPeak: 32.95 GB
20260310 08:48:09 [INFO] Memory: total 18.97 GB (ss.old_gens 39.31 MB, ss.cur_gen 880.34 MB, bcols 3.70 GB, cols 14.38 GB)
20260310 08:48:09 [INFO] Finish: search proper -> took 3639.563941423s (29800.868862s user, 1743.925377s sys)
amling
Posts: 1212
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling »

Sylvani wrote: March 10th, 2026, 8:46 am IIRC I did set the autochoke value in the command I posted.
You absolutely did not. The message contents above (as of writing anyway, please do not edit them to make me a liar) show that you posted a commandline for "@bg:11" including no autochoke and then wrote "@bg:12 doesn't work either" with no further explanation or commandline given.
Sylvani wrote: March 10th, 2026, 8:46 am Anyways, my laptop only has 32GB available with 5-10GB in use at all times, and I didn't want to risk it. It does have a lot (an unnecessary 383 GB) of swap.
The problem here is not that you're using autochoke: that's fine. I'm glad it has been as useful as it has and has opened up quite a bit of possibility for many people, at all memory ranges. The problem is that you posted incomplete information in a way that was misleading and worse than posting no information at all. Do you actually understand this? Do you understand how what you wrote is confusing and why it led me on a wild goose chase, concerned I had some sort of correctness bug?
User avatar
Katrina
Posts: 161
Joined: September 26th, 2024, 3:23 am

Re: amling search program principles discussion / brain dump

Post by Katrina »

amling wrote: March 10th, 2026, 12:51 pm The problem here is not that you're using autochoke: that's fine. I'm glad it has been as useful as it has and has opened up quite a bit of possibility for many people, at all memory ranges. The problem is that you posted incomplete information in a way that was misleading and worse than posting no information at all. Do you actually understand this? Do you understand how what you wrote is confusing and why it led me on a wild goose chase, concerned I had some sort of correctness bug?
I knew that was the problem. Everything I write is confusing. I could've sworn I posted the full command. Why is everyone so aggressive to me lately?
Sokwe
Moderator
Posts: 3375
Joined: July 9th, 2009, 2:44 pm

Re: amling search program principles discussion / brain dump

Post by Sokwe »

Sylvani wrote: March 10th, 2026, 8:16 pm Why is everyone so aggressive to me lately?
I don't think Amling is being too aggressive here, but rather is trying to emphasize the importance of accurate bug reports. To provide a proper bug report, one should at least make sure that they print the exact command that caused the error and any other details that they think might be relevant. It's better to include a few ultimately irrelevant details than to fail to include something important.

Speaking from personal experience, receiving a report that your program has a correctness bug is quite stressful. It's happened to me on occasion with qfind. A lot of searches have been done with qfind (and LLSSS) to prove that no objects with certain properties exist, and a report of a bug that supposedly causes the search to miss valid results would mean that all of those "proofs" would be invalidated. That's would make it feel like a lot of time and energy had been wasted obtaining those results.

When I've gotten reports like that for qfind, they've often come with insufficient information for me to figure out the problem. At that point I've felt a little internal panic, and I immediately begin scouring the code for any issues while also pleading for more information from whomever made the report. It's quite frustrating when I've eventually learned that the bug was a result of incorrect user input, rather than a flaw in qfind's logic.

Your recent report that qfind crashed when trying to reload asymmetric searches was very helpful, because it provided the exact command used to cause the crash, which I was able to recreate. You even went so far as to partially diagnose the problem by determining that it only happened for asymmetric searches, which gave me a very good idea of what was going wrong. I think Amling is just asking for consistent high-quality bug reporting like this.

This may not be exactly what Amling experiences, but I hope this gives some perspective on the issue with incomplete bug reports.
-Matthias Merzenich
amling
Posts: 1212
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling »

After the last round of benchmarking I had decided I had come to terms with promoting these MDSE V2 changes to master, but just now on a whim I went to try to find the weekender with it and realized I hadn't implemented any ends. It took some more complicated rearrangement of the SSM code, but I got fixed board SSM ends to work with MDSE V2 without too much trouble (and hopefully acceptable performance regressions in the MDSE V1 case).

I ran one last round of benchmarking for this (finding the weekender but also running searches one and two widths down for comparison) with (t0) current master, (t1) new code but MDSE V2 not compiled in, (t2a) MDSE V2 compiled in but still running MDSE V1, and (t2b) MDSE V2. I ran widths 10, 11, and 12 where 12 halts when it finds the weekender.

Medians of 3 times, in seconds:

Code: Select all

treatment   10              11               12
---------   -------------   --------------   --------------
t0          62.494232729    417.757017193    2684.274637369
t1          94.461447384    460.684211693    2544.25958091
t2a         95.494053872    473.242113373    2636.555125507
t2b         974.855231946   4315.789759591   14875.51891452
Width 10 searches (small) are up badly from t0 to t1 and t2a, but width 11 and 12 are acceptable and/or improvements. I assume this is due to similar factors as discussed above in prior benchmarking (different phases doing differently better/worse and different sizes dominated by different phases as well as the general optimization work that was rolled into this set of changes).

Memory-wise width 12 reached 27.22 GB (internal view of memory) in t0, t1, and t2a, and only 8.02 GB in t2b. That peak 8.02 GB is 4.60 GB jcols, 2.30 GB "long_cols" jcols extension bitmap, 754.01 MB bcols, 293.47 MB long_bcols, and a bunch of much smaller stuff.

I have published the changes more or less exactly as they were in this benchmarking (as of acbf47337633) and the very, very adventurous could comment in the llsss-mdse-v2 subcommand in src/entry.rs (search for LlsssMdseV2) and run very simple fixed board searches with it. Note most features are not available yet, although for the most part I consider it on my plate to eventually upgrade them all. If you do anything with this and can spare the time to write in I would love to know what you did and how it went (or what features you'd need included in order to do what you want). For reference, the command that found the weekender in benchmarking was:

Code: Select all

rlife llsss-mdse-v2 2c7-f2b '@bg:12' --left-edge even --filters bcaf --llsss-env LLSSS_HALT_ON_ENDS=true
Now I'm gonna go look at trying to catch up and clean up some of the other recent prototypes...
amling
Posts: 1212
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling »

I've reworked the ends stats business slightly, mostly to improve LLSSS_HALT_ON_ENDS. Now all published ends stats trigger it (even ends that historically have not, like pd_lite or max pop), it's triggered only at end of each expansion loop (so all ends for that round have run and you get the "Completed" summary), and you can name specific ends to only halt for some.

Old-style "true" use:

Code: Select all

$ rlife llsss 2c4-s2s '@bg:9' --filters wcaf --llsss-env LLSSS_HALT_ON_ENDS=true
...
20260312 17:24:06 [INFO] End (("LlsssEndsAgar", "zero")):
20260312 17:24:06 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:06 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:06 [INFO] |  ......... |  ......... | ....**...  | ...*..*..  |
20260312 17:24:06 [INFO] |  ...**.... |  ..****... | ...****..  | ..*......  |
20260312 17:24:06 [INFO] |  ..**.**.. |  ..*...*.. | ..**.**..  | ..*...*..  |
20260312 17:24:06 [INFO] |  ...****.. |  ..*...... | ...**....  | ..****...  |
20260312 17:24:06 [INFO] |  ....**... |  ...*..*.. | .........  | .........  |
20260312 17:24:06 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:06 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:06 [INFO] End (("LlsssEndsAgar", "zero")):
20260312 17:24:06 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:06 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:06 [INFO] |  ....**... |  ...*..*.. | .........  | .........  |
20260312 17:24:06 [INFO] |  ...****.. |  ..*...... | ...**....  | ..****...  |
20260312 17:24:06 [INFO] |  ..**.**.. |  ..*...*.. | ..**.**..  | ..*...*..  |
20260312 17:24:06 [INFO] |  ...**.... |  ..****... | ...****..  | ..*......  |
20260312 17:24:06 [INFO] |  ......... |  ......... | ....**...  | ...*..*..  |
20260312 17:24:06 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:06 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:06 [INFO] Results: 2 normal
20260312 17:24:06 [INFO] Completed w_pos 8[3]: 116.61 KB [+167.86%], 90.484584ms [+51.31%]
20260312 17:24:06 [WARNING] Halting (LLSSS_HALT_ON_ENDS)...
20260312 17:24:06 [DEBUG] VmPeak: 2.20 GB
20260312 17:24:06 [DEBUG] Memory: total 116.61 KB (ss.old_gens 640 B, ss.cur_gen 5.38 KB, bcols 22.78 KB, cols 87.83 KB)
20260312 17:24:06 [INFO] Finish: search proper -> took 2.369613723s (15.114296s user, 3.522456s sys)
...
20260312 17:24:06 [INFO] Total: 2.573680611s (16.923735s user, 3.568498s sys)
20260312 17:24:06 [INFO] Final results: 2 normal
20260312 17:24:06 [INFO] Done
Old-style "true" use with multiple ends stops at whichever finds something first:

Code: Select all

$ rlife llsss 2c4-s2s '@bg:9' --filters wcaf --ends gso,bg --llsss-env LLSSS_HALT_ON_ENDS=true
...
20260312 17:24:37 [INFO] End ("LlsssEndsReflect(GSOdd)"):
20260312 17:24:37 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:37 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:37 [INFO] |  ......... |  ......... | ....**...  | ...*..*..  |
20260312 17:24:37 [INFO] |  ...**.... |  ..****... | ...****..  | ..*......  |
20260312 17:24:37 [INFO] |  ..**.**.. |  ..*...*.. | ..**.**..  | ..*...*..  |
20260312 17:24:37 [INFO] End ("LlsssEndsReflect(GSOdd)"):
20260312 17:24:37 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:37 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:37 [INFO] |  ....**... |  ...*..*.. | .........  | .........  |
20260312 17:24:37 [INFO] |  ...****.. |  ..*...... | ...**....  | ..****...  |
20260312 17:24:37 [INFO] |  ..**.**.. |  ..*...*.. | ..**.**..  | ..*...*..  |
20260312 17:24:37 [INFO] Results: 2 LlsssEndsReflect(GSOdd), 0 LlsssEndsAgar(zero)
20260312 17:24:37 [INFO] Completed w_pos 4[3]: 382.33 KB [-31.89%], 198.151421ms [+14.74%]
20260312 17:24:37 [WARNING] Halting (LLSSS_HALT_ON_ENDS)...
20260312 17:24:37 [DEBUG] VmPeak: 2.25 GB
20260312 17:24:37 [DEBUG] Memory: total 382.33 KB (ss.old_gens 2.98 KB, ss.cur_gen 30.97 KB, bcols 101.12 KB, cols 247.25 KB)
20260312 17:24:37 [INFO] Finish: search proper -> took 1.340441533s (8.609779s user, 2.148593s sys)
...
20260312 17:24:37 [INFO] Total: 1.706008459s (12.610504s user, 2.201111s sys)
20260312 17:24:37 [INFO] Final results: 2 LlsssEndsReflect(GSOdd), 0 LlsssEndsAgar(zero)
20260312 17:24:37 [INFO] Done
You can specify comma-separated list of values to halt on. The values are as printed there (e.g. "LlsssEndsAgar(zero)"), or any extra aliases they configure (in this case e.g. "LlsssEndsAgar" as well, not particularly discoverable at least for now). An example, specifying to halt only on the bg (agar) end:

Code: Select all

$ rlife llsss 2c4-s2s '@bg:9' --filters wcaf --ends gso,bg --llsss-env LLSSS_HALT_ON_ENDS=LlsssEndsAgar
...
20260312 17:24:57 [INFO] End ("LlsssEndsReflect(GSOdd)"):
20260312 17:24:57 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:57 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:57 [INFO] |  ......... |  ......... | ....**...  | ...*..*..  |
20260312 17:24:57 [INFO] |  ...**.... |  ..****... | ...****..  | ..*......  |
20260312 17:24:57 [INFO] |  ..**.**.. |  ..*...*.. | ..**.**..  | ..*...*..  |
20260312 17:24:57 [INFO] End ("LlsssEndsReflect(GSOdd)"):
20260312 17:24:57 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:57 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:57 [INFO] |  ....**... |  ...*..*.. | .........  | .........  |
20260312 17:24:57 [INFO] |  ...****.. |  ..*...... | ...**....  | ..****...  |
20260312 17:24:57 [INFO] |  ..**.**.. |  ..*...*.. | ..**.**..  | ..*...*..  |
20260312 17:24:57 [INFO] Results: 2 LlsssEndsReflect(GSOdd), 0 LlsssEndsAgar(zero)
20260312 17:24:57 [INFO] Completed w_pos 4[3]: 382.33 KB [-31.89%], 192.061216ms [+15.75%]
...
20260312 17:24:58 [INFO] End ("LlsssEndsReflect(GSOdd)"):
20260312 17:24:58 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:58 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:58 [INFO] |  ......... |  ......... | ....**...  | ...*..*..  |
20260312 17:24:58 [INFO] |  ...**.... |  ..****... | ...****..  | ..*......  |
20260312 17:24:58 [INFO] |  ..**.**.. |  ..*...*.. | ..**.**..  | ..*...*..  |
20260312 17:24:58 [INFO] |  ...****.. |  ..*...... | ...**....  | ..****...  |
20260312 17:24:58 [INFO] |  ....**... |  ...*..*.. | .........  | .........  |
20260312 17:24:58 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:58 [INFO] End ("LlsssEndsReflect(GSOdd)"):
20260312 17:24:58 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:58 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:58 [INFO] |  ....**... |  ...*..*.. | .........  | .........  |
20260312 17:24:58 [INFO] |  ...****.. |  ..*...... | ...**....  | ..****...  |
20260312 17:24:58 [INFO] |  ..**.**.. |  ..*...*.. | ..**.**..  | ..*...*..  |
20260312 17:24:58 [INFO] |  ...**.... |  ..****... | ...****..  | ..*......  |
20260312 17:24:58 [INFO] |  ......... |  ......... | ....**...  | ...*..*..  |
20260312 17:24:58 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:58 [INFO] Results: 4 LlsssEndsReflect(GSOdd), 0 LlsssEndsAgar(zero)
20260312 17:24:58 [INFO] Completed w_pos 7[3]: 10.19 KB [+9.90%], 58.450285ms [-3.54%]
...
20260312 17:24:58 [INFO] End (("LlsssEndsAgar", "zero")):
20260312 17:24:58 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:58 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:58 [INFO] |  ......... |  ......... | ....**...  | ...*..*..  |
20260312 17:24:58 [INFO] |  ...**.... |  ..****... | ...****..  | ..*......  |
20260312 17:24:58 [INFO] |  ..**.**.. |  ..*...*.. | ..**.**..  | ..*...*..  |
20260312 17:24:58 [INFO] |  ...****.. |  ..*...... | ...**....  | ..****...  |
20260312 17:24:58 [INFO] |  ....**... |  ...*..*.. | .........  | .........  |
20260312 17:24:58 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:58 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:58 [INFO] End (("LlsssEndsAgar", "zero")):
20260312 17:24:58 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:58 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:58 [INFO] |  ....**... |  ...*..*.. | .........  | .........  |
20260312 17:24:58 [INFO] |  ...****.. |  ..*...... | ...**....  | ..****...  |
20260312 17:24:58 [INFO] |  ..**.**.. |  ..*...*.. | ..**.**..  | ..*...*..  |
20260312 17:24:58 [INFO] |  ...**.... |  ..****... | ...****..  | ..*......  |
20260312 17:24:58 [INFO] |  ......... |  ......... | ....**...  | ...*..*..  |
20260312 17:24:58 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:58 [INFO] |  ......... |  ......... | .........  | .........  |
20260312 17:24:58 [INFO] Results: 4 LlsssEndsReflect(GSOdd), 2 LlsssEndsAgar(zero)
20260312 17:24:58 [INFO] Completed w_pos 8[3]: 116.61 KB [+167.86%], 98.6722ms [+51.20%]
20260312 17:24:58 [WARNING] Halting (LLSSS_HALT_ON_ENDS)...
20260312 17:24:58 [DEBUG] VmPeak: 2.43 GB
20260312 17:24:58 [DEBUG] Memory: total 116.61 KB (ss.old_gens 640 B, ss.cur_gen 5.38 KB, bcols 22.78 KB, cols 87.83 KB)
20260312 17:24:58 [INFO] Finish: search proper -> took 2.480504853s (14.47654s user, 4.631212s sys)
...
20260312 17:24:58 [INFO] Total: 2.861748922s (18.530083s user, 4.696582s sys)
20260312 17:24:58 [INFO] Final results: 4 LlsssEndsReflect(GSOdd), 2 LlsssEndsAgar(zero)
20260312 17:24:58 [INFO] Done
String values are checked somewhat early (end of each expansion loop) against registered values so if you specify an unknown one or typo it should crash pretty fast.

I've published it just now (as of 1c08dd81d6d3) but I wouldn't consider it set in stone.
amling
Posts: 1212
Joined: April 2nd, 2020, 9:47 pm

Re: amling search program principles discussion / brain dump

Post by amling »

I've committed the last partial RLE stuff and published it (as of e63d1900e444). From a user perspective it is more or less the same as the prototype above. Internally, I changed it to actually compute pretty names from rule tables and output nothing if it can't, meaning e.g. strict MAP rules aren't going to get anything, nor will rules with nondeterministic or forbidden transitions. It prefers "V" format over "H" format over normal format. The only surprise I think from this is that rules that can be "V" will be (e.g. "B2e3ajk4akqw5ajk6e/S" -> "B2e/SV") and this includes the 4 neighborhood-insensitive rules (e.g. "B/SV"). I think this is all fine, especially to get it started baking.

We could reasonably handle forbidden transitions by picking a rule that is strictly more generous, presumably either including all forbidden transitions for the maximal rule or excluding them all for the minimal rule. I don't feel particularly strongly about this so I guess I will leave it as is.
Post Reply