amling search program principles discussion / brain dump

For scripts to aid with computation or simulation in cellular automata.
User avatar
May13
Posts: 959
Joined: March 11th, 2021, 8:33 am

Re: amling search program principles discussion / brain dump

Post by May13 » July 14th, 2024, 11:53 am

LaundryPizza03 wrote:
July 14th, 2024, 1:47 am
How do I run the rs files in the rlife package?
In general, the program should be compiled using command "cargo build -release". Although some errors are possible. In this case, it is better to ask amling.
Here's an example of command to search for 2c/3 spaceship in back-to-front direction: viewtopic.php?p=189423#p189423

Unrelated, it appears (for me) that recentering search fails when the horizontal shift is not zero (e.g. c/3d and (2,1)c/5). This is especially bad for knightship searches.
Edit: p.in

Code: Select all

|       |       | ZZZZZ | ..... |
| ZZZZZ | ..... | ..... | ..... |
| ..... | ..... | ..... | ..... |
| ..... | ..... |       |       |
Error:

Code: Select all

target/release/rlife --rule B2/S134H c4k-1 p.in 00 --wao-left-pad 00 --wao-right-pad 00 --wao-idx ALL 60 | tee -i log.txt
thread 'main' panicked at src/lat/grid.rs:56:5:
assertion failed: root_chars.iter().all(|&c2| c2 == c)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
The latest version of hex-gliders.db have 668 gliders from OT hexagonal rules.
The latest version of new-gliders.db (28991 gliders): here
My scripts: new-glider.py v0.2, nbsearch2a.py, collector.py v0.3

-Dmitry Maitak

User avatar
LaundryPizza03
Posts: 2412
Joined: December 15th, 2017, 12:05 am
Location: Unidentified location "https://en.wikipedia.org/wiki/Texas"

Re: amling search program principles discussion / brain dump

Post by LaundryPizza03 » July 14th, 2024, 9:16 pm

May13 wrote:
July 14th, 2024, 11:53 am
LaundryPizza03 wrote:
July 14th, 2024, 1:47 am
How do I run the rs files in the rlife package?
In general, the program should be compiled using command "cargo build -release". Although some errors are possible. In this case, it is better to ask amling.
Here's an example of command to search for 2c/3 spaceship in back-to-front direction: viewtopic.php?p=189423#p189423

Unrelated, it appears (for me) that recentering search fails when the horizontal shift is not zero (e.g. c/3d and (2,1)c/5). This is especially bad for knightship searches.
Edit: p.in

Code: Select all

|       |       | ZZZZZ | ..... |
| ZZZZZ | ..... | ..... | ..... |
| ..... | ..... | ..... | ..... |
| ..... | ..... |       |       |
Error:

Code: Select all

target/release/rlife --rule B2/S134H c4k-1 p.in 00 --wao-left-pad 00 --wao-right-pad 00 --wao-idx ALL 60 | tee -i log.txt
thread 'main' panicked at src/lat/grid.rs:56:5:
assertion failed: root_chars.iter().all(|&c2| c2 == c)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
This error happened:

Code: Select all

> cargo build --release
    Updating crates.io index
error: failed to select a version for the requirement `clap = "=4.3.17"`
candidate versions found which didn't match: 3.2.25, 3.2.24, 3.2.23, ...
location searched: crates.io index
required by package `rlife v1.0.0 (/Users/gb/rlife)`
How do I update clap?

Code: Select all

x = 4, y = 3, rule = B3-q4z5y/S234k5j
2b2o$b2o$2o!
LaundryPizza03 at Wikipedia

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

Re: amling search program principles discussion / brain dump

Post by amling » July 14th, 2024, 11:42 pm

LaundryPizza03 wrote:
July 14th, 2024, 1:47 am
How do I run the rs files in the rlife package?
"rs" is rust and I believe most rust projects are run from source via `cargo run`. If you want it to perform even semi-reasonably make it `cargo run --release`. You could also `cargo build` or `cargo build --release` and then run the binary left in the `target` directory.

Setting up LLSSS searches is extremely complicated and I have no ability whatsoever to make software anything bordering on user-friendly. If you have a specific CA problem you want to solve or search you want to run you could describe the parameters and I could sketch an invocation. Generally consulting with me before running LLSSS searches is going to be a good idea, at least for searches that are not easy variations of searches you have already run.
Last edited by amling on July 15th, 2024, 12:21 am, edited 1 time in total.

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

Re: amling search program principles discussion / brain dump

Post by amling » July 14th, 2024, 11:47 pm

LaundryPizza03 wrote:
July 14th, 2024, 9:16 pm
This error happened:

Code: Select all

> cargo build --release
    Updating crates.io index
error: failed to select a version for the requirement `clap = "=4.3.17"`
candidate versions found which didn't match: 3.2.25, 3.2.24, 3.2.23, ...
location searched: crates.io index
required by package `rlife v1.0.0 (/Users/gb/rlife)`
How do I update clap?
I do not understand this error and do not agree with upgrading clap being the first course of action. Clap 4.3.17 seems to me to exist on crates.io here and a new test project with just that as a dependency is able to find it. Are you running in some wacky circumstances with a proxied and corrupted crates.io view or something? I just can't even imagine how you could have gotten this error.

EDIT: My best guess for debugging this would be make a new project (e.g. `cargo init x`), add a wildcard clap dependency (`clap = "*"` in `Cargo.toml`), and see what clap version you get (e.g. `cargo check`). I get v4.5.9 but if you get something like v3.2.25 I will be fairly confident something is wrong with your view of crates.io.

EDIT2: Here is another wacky guess: minimum rust version was bumped from clap v3.2.25 to v4.0.0 from rust v1.56.1 to v1.60.0. If you have a version of rust that old perhaps it would produce this? I am uncertain but it seems like an uncharacteristically poor error message on cargo's part if so.
Last edited by amling on July 15th, 2024, 1:26 am, edited 3 times in total.

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

Re: amling search program principles discussion / brain dump

Post by amling » July 15th, 2024, 12:04 am

May13 wrote:
July 14th, 2024, 11:53 am
Unrelated, it appears (for me) that recentering search fails when the horizontal shift is not zero (e.g. c/3d and (2,1)c/5). This is especially bad for knightship searches.
Edit: p.in

Code: Select all

|       |       | ZZZZZ | ..... |
| ZZZZZ | ..... | ..... | ..... |
| ..... | ..... | ..... | ..... |
| ..... | ..... |       |       |
Error:

Code: Select all

target/release/rlife --rule B2/S134H c4k-1 p.in 00 --wao-left-pad 00 --wao-right-pad 00 --wao-idx ALL 60 | tee -i log.txt
thread 'main' panicked at src/lat/grid.rs:56:5:
assertion failed: root_chars.iter().all(|&c2| c2 == c)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
I am so very sorry, but non-simple-orthogonal geometries are going to be a special white-hot agony. I see you found c4k-1 which is the first terrible step, but you still have to figure out what shape the grid has to take.

I am able to run c4k-1 searches with the following input file:

Code: Select all

|     |     | ZZZ | ZZZ |
| ZZZ | ZZZ | ... | ... |
| ... | ... | ... | ... |
| ... | ... | ... | ... |
| ... | ... |     |     |
Note it has 3 rows (Y and W are the same here) as WAO requires an extra row (which it will only produce non-matches of).

And the following (sort of) invocation:

Code: Select all

rlife llsss-recentering-wao --rule B2/S134H c4k-1 c4k-1.in 00 --wao-left-pad 00 --wao-right-pad 00 --wao-idx ALL 14
Note it has to be the "llsss-recentering-wao" main for those sorts of arguments (which I assume you built an appropriate single-main binary for). For non-simple-orthogonal searches and WAO you could optimize even further by forcing the mismatch to be in a specific generation with --wao-tile-error-mask but for now probably best to run the less-optimal search, find partials that look good, and try to extend those with other search modes. This sort of thing (run sketchy WAO search, then extend with more normal modes) is how I've tended to do search projects since the invention of WAO.

For c5k-1 you could use:

Code: Select all

|     |     |     | ZZZ | ZZZ |
| ZZZ | ZZZ | ZZZ | ... | ... |
| ... | ... | ... | ... | ... |
| ... | ... | ... | ... | ... |
| ... | ... | ... |     |     |
Generally these days I produce these grids by feeding something like this (uniform):

Code: Select all

| ZZZ | ZZZ | ZZZ | ZZZ | ZZZ |
| ... | ... | ... | ... | ... |
| ... | ... | ... | ... | ... |
| ... | ... | ... | ... | ... |
which I consider to be "in UWI coordinates" through `rlife grid-tool from-uwi c5k-1` to produce the wacky staggered views. You still have to know how many blocks to write (how deep the "I" index goes).

Also, you may have already noticed, but the "k" geometries are all oriented NW/SE and for hex rules you might have wanted to run the searches with travel NE/SW. You can do this but you'd have to write a "raw" geometry, e.g. "raw:1:0:0:1:-2:4:0:1:0" I think for something like c4k-1 but heading NE instead of NW (EDIT: and this requires an even weirder grid which I would never get right w/o `from-uwi`).

Again, I am sorry this is all such a mess but you are definitely going places almost no one has gone.

User avatar
LaundryPizza03
Posts: 2412
Joined: December 15th, 2017, 12:05 am
Location: Unidentified location "https://en.wikipedia.org/wiki/Texas"

Re: amling search program principles discussion / brain dump

Post by LaundryPizza03 » July 15th, 2024, 1:21 pm

amling wrote:
July 14th, 2024, 11:47 pm
LaundryPizza03 wrote:
July 14th, 2024, 9:16 pm
This error happened:

Code: Select all

> cargo build --release
    Updating crates.io index
error: failed to select a version for the requirement `clap = "=4.3.17"`
candidate versions found which didn't match: 3.2.25, 3.2.24, 3.2.23, ...
location searched: crates.io index
required by package `rlife v1.0.0 (/Users/gb/rlife)`
How do I update clap?
I do not understand this error and do not agree with upgrading clap being the first course of action. Clap 4.3.17 seems to me to exist on crates.io here and a new test project with just that as a dependency is able to find it. Are you running in some wacky circumstances with a proxied and corrupted crates.io view or something? I just can't even imagine how you could have gotten this error.

EDIT: My best guess for debugging this would be make a new project (e.g. `cargo init x`), add a wildcard clap dependency (`clap = "*"` in `Cargo.toml`), and see what clap version you get (e.g. `cargo check`). I get v4.5.9 but if you get something like v3.2.25 I will be fairly confident something is wrong with your view of crates.io.

EDIT2: Here is another wacky guess: minimum rust version was bumped from clap v3.2.25 to v4.0.0 from rust v1.56.1 to v1.60.0. If you have a version of rust that old perhaps it would produce this? I am uncertain but it seems like an uncharacteristically poor error message on cargo's part if so.
I cannot update clap:

Code: Select all

> cargo install clap
    Updating crates.io index
  Downloaded clap v3.2.25
  Downloaded 1 crate (219.4 KB) in 0.21s
  Installing clap v3.2.25
  Downloaded textwrap v0.16.1
  Downloaded os_str_bytes v6.6.1
  Downloaded atty v0.2.14
  Downloaded indexmap v1.9.3
  Downloaded termcolor v1.4.1
  Downloaded strsim v0.10.0
  Downloaded hashbrown v0.12.3
  Downloaded libc v0.2.155
  Downloaded bitflags v1.3.2
  Downloaded clap_lex v0.2.4
  Downloaded autocfg v1.3.0
  Downloaded 11 crates (1.1 MB) in 0.24s
error: failed to compile `clap v3.2.25`, intermediate artifacts can be found at `/var/folders/58/9glcl5ps7_qdp9gr769704vw0000gr/T/cargo-installrymnin`

Caused by:
  package `os_str_bytes v6.6.1` cannot be built because it requires rustc 1.61.0 or newer, while the currently active rustc version is 1.59.0
I also don't know how to update rustc on my system.

Code: Select all

x = 4, y = 3, rule = B3-q4z5y/S234k5j
2b2o$b2o$2o!
LaundryPizza03 at Wikipedia

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

Re: amling search program principles discussion / brain dump

Post by amling » July 15th, 2024, 1:44 pm

LaundryPizza03 wrote:
July 15th, 2024, 1:21 pm
amling wrote:
July 14th, 2024, 11:47 pm
LaundryPizza03 wrote:
July 14th, 2024, 9:16 pm
How do I update clap?
I do not understand this error and do not agree with upgrading clap being the first course of action.
I cannot update clap
Yes, well, as I said, I didn't agree with even attempting it, especially without understanding what was going wrong. Now that we know you have a very old rust compiler I can tell you for sure it's not going to improve things to try to take on a later clap. If you were going to go that sort of insane route you would have to downgrade clap to make it compatible with the ancient rust compiler, but I can save you the trouble of trying: the LLSSS code is definitely not going to work with such an old rust either. Off the top of my head I am sure you'll need at least rustc version 1.75.0 for trait method return position impl Trait.

Generally LLSSS's minimum rust version has tracked whatever was available in debian "testing", not for any particularly principled reason, but because it's what I'm running over here and generally as rust has released new features I have taken advantage of them.
LaundryPizza03 wrote:
July 15th, 2024, 1:21 pm
I also don't know how to update rustc on my system.
Me neither as you've haven't told me anything about what is going on over there other than what I can guess from reading copy-pasted error messages. What OS are you running over there? I think "/Users" is gonna mean macOS. How did you get rust in the first place? If you had googled "how to get rust compiler" I believe you would have been lead to use rustup to install it in which case you should now google "rustup update rust compiler" or the like and follow the rust community's documentation about how to manage installed version of rust using rustup.

User avatar
LaundryPizza03
Posts: 2412
Joined: December 15th, 2017, 12:05 am
Location: Unidentified location "https://en.wikipedia.org/wiki/Texas"

Re: amling search program principles discussion / brain dump

Post by LaundryPizza03 » July 15th, 2024, 10:06 pm

amling wrote:
July 15th, 2024, 1:44 pm
Me neither as you've haven't told me anything about what is going on over there other than what I can guess from reading copy-pasted error messages. What OS are you running over there? I think "/Users" is gonna mean macOS. How did you get rust in the first place? If you had googled "how to get rust compiler" I believe you would have been lead to use rustup to install it in which case you should now google "rustup update rust compiler" or the like and follow the rust community's documentation about how to manage installed version of rust using rustup.
macOS v12.7.5. I'm cloning rust right now...

Code: Select all

x = 4, y = 3, rule = B3-q4z5y/S234k5j
2b2o$b2o$2o!
LaundryPizza03 at Wikipedia

User avatar
LaundryPizza03
Posts: 2412
Joined: December 15th, 2017, 12:05 am
Location: Unidentified location "https://en.wikipedia.org/wiki/Texas"

Re: amling search program principles discussion / brain dump

Post by LaundryPizza03 » July 16th, 2024, 3:27 am

Okay, so I got rust and clap v4.5.9 and rustc v1.79.0 installed. Then I got errors about undeclared variables, functions, and object types:

Code: Select all

> cargo build --release                          
warning: `/Users/gb/rlife/.cargo/config` is deprecated in favor of `config.toml`
note: if you need to support cargo 1.38 or earlier, you can symlink `config` to `config.toml`
    Updating crates.io index
  Downloaded anstyle-query v1.0.0
  Downloaded byteorder v1.4.3
  Downloaded autocfg v1.1.0
  Downloaded is-terminal v0.4.9
  Downloaded crunchy v0.2.2
  Downloaded colorchoice v1.0.0
  Downloaded spliter v0.1.0
  Downloaded hex v0.4.3
  Downloaded errno v0.3.1
  Downloaded pest_generator v2.7.6
  Downloaded utf8parse v0.2.1
  Downloaded quote v1.0.31
  Downloaded unicode-ident v1.0.11
  Downloaded serde_json v1.0.103
  Downloaded syn v2.0.27
  Downloaded regex-automata v0.3.3
  Downloaded bitintr v0.3.0
  Downloaded libc v0.2.147
  Downloaded serde_derive v1.0.174
  Downloaded rustix v0.38.4
  Downloaded regex-syntax v0.7.4
  Downloaded regex v1.9.1
  Downloaded rayon v1.7.0
  Downloaded clap_builder v4.3.17
  Downloaded chrono v0.4.26
  Downloaded rayon-core v1.11.0
  Downloaded pest v2.7.6
  Downloaded hashbrown v0.12.3
  Downloaded crossbeam-channel v0.5.8
  Downloaded base64 v0.21.2
  Downloaded aho-corasick v1.0.2
  Downloaded uint v0.9.5
  Downloaded ucd-trie v0.1.6
  Downloaded serde v1.0.174
  Downloaded ryu v1.0.15
  Downloaded proc-macro2 v1.0.66
  Downloaded pest_meta v2.7.6
  Downloaded once_cell v1.18.0
  Downloaded num-traits v0.2.16
  Downloaded indexmap v1.9.3
  Downloaded getrandom v0.2.10
  Downloaded crossbeam-utils v0.8.16
  Downloaded crossbeam-epoch v0.9.15
  Downloaded clap v4.3.17
  Downloaded priority-queue v1.3.2
  Downloaded pest_derive v2.7.6
  Downloaded bitflags v2.3.3
  Downloaded thiserror-impl v1.0.55
  Downloaded thiserror v1.0.55
  Downloaded strsim v0.10.0
  Downloaded clap_derive v4.3.12
  Downloaded bincode v1.3.3
  Downloaded anstyle-parse v0.2.1
  Downloaded memoffset v0.9.0
  Downloaded json5 v0.4.1
  Downloaded itoa v1.0.9
  Downloaded iana-time-zone v0.1.57
  Downloaded either v1.9.0
  Downloaded crossbeam-queue v0.3.8
  Downloaded crossbeam-deque v0.8.3
  Downloaded cpufeatures v0.2.9
  Downloaded core-foundation-sys v0.8.4
  Downloaded clap_lex v0.5.0
  Downloaded anstyle v1.0.1
  Downloaded anstream v0.3.2
  Downloaded 65 crates (5.4 MB) in 1.08s
   Compiling proc-macro2 v1.0.66
   Compiling unicode-ident v1.0.11
   Compiling autocfg v1.1.0
   Compiling libc v0.2.147
   Compiling memchr v2.5.0
   Compiling cfg-if v1.0.0
   Compiling thiserror v1.0.55
   Compiling crossbeam-utils v0.8.16
   Compiling syn v1.0.109
   Compiling quote v1.0.31
   Compiling num-traits v0.2.16
   Compiling syn v2.0.27
   Compiling memoffset v0.9.0
   Compiling serde v1.0.174
   Compiling crossbeam-epoch v0.9.15
   Compiling rustix v0.38.4
   Compiling core-foundation-sys v0.8.4
   Compiling iana-time-zone v0.1.57
   Compiling thiserror-impl v1.0.55
   Compiling serde_derive v1.0.174
   Compiling errno v0.3.1
   Compiling bitflags v2.3.3
   Compiling ucd-trie v0.1.6
   Compiling scopeguard v1.2.0
   Compiling pest v2.7.6
   Compiling chrono v0.4.26
   Compiling ars_sane_derive v1.0.0 (/Users/gb/rlife/ars/sane_derive)
   Compiling utf8parse v0.2.1
   Compiling once_cell v1.18.0
   Compiling rayon-core v1.11.0
   Compiling serde_json v1.0.103
   Compiling ars_core v1.0.0 (/Users/gb/rlife/ars/core)
   Compiling pest_meta v2.7.6
   Compiling anstyle-parse v0.2.1
   Compiling is-terminal v0.4.9
   Compiling crossbeam-deque v0.8.3
   Compiling crossbeam-channel v0.5.8
   Compiling num_cpus v1.16.0
   Compiling getrandom v0.2.10
   Compiling indexmap v1.9.3
   Compiling itoa v1.0.9
   Compiling colorchoice v1.0.0
   Compiling crunchy v0.2.2
   Compiling ryu v1.0.15
   Compiling anstyle v1.0.1
   Compiling anstyle-query v1.0.0
   Compiling anstream v0.3.2
   Compiling rand_core v0.6.4
   Compiling pest_generator v2.7.6
   Compiling aho-corasick v1.0.2
   Compiling priority-queue v1.3.2
   Compiling crossbeam-queue v0.3.8
   Compiling hashbrown v0.12.3
   Compiling strsim v0.10.0
   Compiling ppv-lite86 v0.2.17
   Compiling clap_lex v0.5.0
   Compiling regex-syntax v0.7.4
   Compiling bitintr v0.3.0
   Compiling heck v0.4.1
   Compiling either v1.9.0
   Compiling rayon v1.7.0
   Compiling ars_rctl_core v1.0.0 (/Users/gb/rlife/ars/rctl/core)
   Compiling regex-automata v0.3.3
   Compiling clap_derive v4.3.12
   Compiling rand_chacha v0.3.1
   Compiling clap_builder v4.3.17
   Compiling pest_derive v2.7.6
   Compiling byteorder v1.4.3
   Compiling hex v0.4.3
   Compiling static_assertions v1.1.0
   Compiling uint v0.9.5
   Compiling clap v4.3.17
   Compiling json5 v0.4.1
   Compiling regex v1.9.1
   Compiling rand v0.8.5
   Compiling spliter v0.1.0
   Compiling ars_rctl_main v1.0.0 (/Users/gb/rlife/ars/rctl/main)
   Compiling bincode v1.3.3
   Compiling ars_aa v1.0.0 (/Users/gb/rlife/ars/aa)
   Compiling ars_rctl_derive v1.0.0 (/Users/gb/rlife/ars/rctl/derive)
   Compiling base64 v0.21.2
   Compiling rlife v1.0.0 (/Users/gb/rlife)
error[E0425]: cannot find function `mremap` in crate `libc`
    --> src/mmap.rs:59:19
     |
59   |               libc::mremap(
     |                     ^^^^^^ help: a function with a similar name exists: `mmap`
     |
    ::: /Users/gb/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libc-0.2.147/src/unix/mod.rs:1003:5
     |
1003 | /     pub fn mmap(
1004 | |         addr: *mut ::c_void,
1005 | |         len: ::size_t,
1006 | |         prot: ::c_int,
...    |
1009 | |         offset: off_t,
1010 | |     ) -> *mut ::c_void;
     | |______________________- similarly named function `mmap` defined here

error[E0425]: cannot find value `MREMAP_MAYMOVE` in crate `libc`
  --> src/mmap.rs:63:23
   |
63 |                 libc::MREMAP_MAYMOVE,
   |                       ^^^^^^^^^^^^^^ not found in `libc`

error[E0412]: cannot find type `MeasureImpl` in this scope
   --> src/time.rs:181:39
    |
181 | pub type TimeStats = TimeStatsGeneric<MeasureImpl>;
    |                                       ^^^^^^^^^^^ not found in this scope
    |
help: you might be missing a type parameter
    |
181 | pub type TimeStats<MeasureImpl> = TimeStatsGeneric<MeasureImpl>;
    |                   +++++++++++++

error[E0433]: failed to resolve: use of undeclared type `MeasureImpl`
   --> src/time.rs:167:14
    |
167 |     let t0 = MeasureImpl::base();
    |              ^^^^^^^^^^^ use of undeclared type `MeasureImpl`

error[E0433]: failed to resolve: use of undeclared type `MeasureImpl`
   --> src/time.rs:170:71
    |
170 | ...", label, MeasureImpl::elapsed(&t0)));
    |              ^^^^^^^^^^^ use of undeclared type `MeasureImpl`

Some errors have detailed explanations: E0412, E0425, E0433.
For more information about an error, try `rustc --explain E0412`.
error: could not compile `rlife` (bin "rlife") due to 5 previous errors

Code: Select all

x = 4, y = 3, rule = B3-q4z5y/S234k5j
2b2o$b2o$2o!
LaundryPizza03 at Wikipedia

User avatar
May13
Posts: 959
Joined: March 11th, 2021, 8:33 am

Re: amling search program principles discussion / brain dump

Post by May13 » July 16th, 2024, 3:46 am

LaundryPizza03 wrote:
July 16th, 2024, 3:27 am
Okay, so I got rust and clap v4.5.9 and rustc v1.79.0 installed. Then I got errors about undeclared variables, functions, and object types:

Code: Select all

> cargo build --release                          
warning: `/Users/gb/rlife/.cargo/config` is deprecated in favor of `config.toml`
note: if you need to support cargo 1.38 or earlier, you can symlink `config` to `config.toml`
    Updating crates.io index
  Downloaded anstyle-query v1.0.0
  Downloaded byteorder v1.4.3
  Downloaded autocfg v1.1.0
  Downloaded is-terminal v0.4.9
  Downloaded crunchy v0.2.2
  Downloaded colorchoice v1.0.0
  Downloaded spliter v0.1.0
  Downloaded hex v0.4.3
  Downloaded errno v0.3.1
  Downloaded pest_generator v2.7.6
  Downloaded utf8parse v0.2.1
  Downloaded quote v1.0.31
  Downloaded unicode-ident v1.0.11
  Downloaded serde_json v1.0.103
  Downloaded syn v2.0.27
  Downloaded regex-automata v0.3.3
  Downloaded bitintr v0.3.0
  Downloaded libc v0.2.147
  Downloaded serde_derive v1.0.174
  Downloaded rustix v0.38.4
  Downloaded regex-syntax v0.7.4
  Downloaded regex v1.9.1
  Downloaded rayon v1.7.0
  Downloaded clap_builder v4.3.17
  Downloaded chrono v0.4.26
  Downloaded rayon-core v1.11.0
  Downloaded pest v2.7.6
  Downloaded hashbrown v0.12.3
  Downloaded crossbeam-channel v0.5.8
  Downloaded base64 v0.21.2
  Downloaded aho-corasick v1.0.2
  Downloaded uint v0.9.5
  Downloaded ucd-trie v0.1.6
  Downloaded serde v1.0.174
  Downloaded ryu v1.0.15
  Downloaded proc-macro2 v1.0.66
  Downloaded pest_meta v2.7.6
  Downloaded once_cell v1.18.0
  Downloaded num-traits v0.2.16
  Downloaded indexmap v1.9.3
  Downloaded getrandom v0.2.10
  Downloaded crossbeam-utils v0.8.16
  Downloaded crossbeam-epoch v0.9.15
  Downloaded clap v4.3.17
  Downloaded priority-queue v1.3.2
  Downloaded pest_derive v2.7.6
  Downloaded bitflags v2.3.3
  Downloaded thiserror-impl v1.0.55
  Downloaded thiserror v1.0.55
  Downloaded strsim v0.10.0
  Downloaded clap_derive v4.3.12
  Downloaded bincode v1.3.3
  Downloaded anstyle-parse v0.2.1
  Downloaded memoffset v0.9.0
  Downloaded json5 v0.4.1
  Downloaded itoa v1.0.9
  Downloaded iana-time-zone v0.1.57
  Downloaded either v1.9.0
  Downloaded crossbeam-queue v0.3.8
  Downloaded crossbeam-deque v0.8.3
  Downloaded cpufeatures v0.2.9
  Downloaded core-foundation-sys v0.8.4
  Downloaded clap_lex v0.5.0
  Downloaded anstyle v1.0.1
  Downloaded anstream v0.3.2
  Downloaded 65 crates (5.4 MB) in 1.08s
   Compiling proc-macro2 v1.0.66
   Compiling unicode-ident v1.0.11
   Compiling autocfg v1.1.0
   Compiling libc v0.2.147
   Compiling memchr v2.5.0
   Compiling cfg-if v1.0.0
   Compiling thiserror v1.0.55
   Compiling crossbeam-utils v0.8.16
   Compiling syn v1.0.109
   Compiling quote v1.0.31
   Compiling num-traits v0.2.16
   Compiling syn v2.0.27
   Compiling memoffset v0.9.0
   Compiling serde v1.0.174
   Compiling crossbeam-epoch v0.9.15
   Compiling rustix v0.38.4
   Compiling core-foundation-sys v0.8.4
   Compiling iana-time-zone v0.1.57
   Compiling thiserror-impl v1.0.55
   Compiling serde_derive v1.0.174
   Compiling errno v0.3.1
   Compiling bitflags v2.3.3
   Compiling ucd-trie v0.1.6
   Compiling scopeguard v1.2.0
   Compiling pest v2.7.6
   Compiling chrono v0.4.26
   Compiling ars_sane_derive v1.0.0 (/Users/gb/rlife/ars/sane_derive)
   Compiling utf8parse v0.2.1
   Compiling once_cell v1.18.0
   Compiling rayon-core v1.11.0
   Compiling serde_json v1.0.103
   Compiling ars_core v1.0.0 (/Users/gb/rlife/ars/core)
   Compiling pest_meta v2.7.6
   Compiling anstyle-parse v0.2.1
   Compiling is-terminal v0.4.9
   Compiling crossbeam-deque v0.8.3
   Compiling crossbeam-channel v0.5.8
   Compiling num_cpus v1.16.0
   Compiling getrandom v0.2.10
   Compiling indexmap v1.9.3
   Compiling itoa v1.0.9
   Compiling colorchoice v1.0.0
   Compiling crunchy v0.2.2
   Compiling ryu v1.0.15
   Compiling anstyle v1.0.1
   Compiling anstyle-query v1.0.0
   Compiling anstream v0.3.2
   Compiling rand_core v0.6.4
   Compiling pest_generator v2.7.6
   Compiling aho-corasick v1.0.2
   Compiling priority-queue v1.3.2
   Compiling crossbeam-queue v0.3.8
   Compiling hashbrown v0.12.3
   Compiling strsim v0.10.0
   Compiling ppv-lite86 v0.2.17
   Compiling clap_lex v0.5.0
   Compiling regex-syntax v0.7.4
   Compiling bitintr v0.3.0
   Compiling heck v0.4.1
   Compiling either v1.9.0
   Compiling rayon v1.7.0
   Compiling ars_rctl_core v1.0.0 (/Users/gb/rlife/ars/rctl/core)
   Compiling regex-automata v0.3.3
   Compiling clap_derive v4.3.12
   Compiling rand_chacha v0.3.1
   Compiling clap_builder v4.3.17
   Compiling pest_derive v2.7.6
   Compiling byteorder v1.4.3
   Compiling hex v0.4.3
   Compiling static_assertions v1.1.0
   Compiling uint v0.9.5
   Compiling clap v4.3.17
   Compiling json5 v0.4.1
   Compiling regex v1.9.1
   Compiling rand v0.8.5
   Compiling spliter v0.1.0
   Compiling ars_rctl_main v1.0.0 (/Users/gb/rlife/ars/rctl/main)
   Compiling bincode v1.3.3
   Compiling ars_aa v1.0.0 (/Users/gb/rlife/ars/aa)
   Compiling ars_rctl_derive v1.0.0 (/Users/gb/rlife/ars/rctl/derive)
   Compiling base64 v0.21.2
   Compiling rlife v1.0.0 (/Users/gb/rlife)
error[E0425]: cannot find function `mremap` in crate `libc`
    --> src/mmap.rs:59:19
     |
59   |               libc::mremap(
     |                     ^^^^^^ help: a function with a similar name exists: `mmap`
     |
    ::: /Users/gb/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libc-0.2.147/src/unix/mod.rs:1003:5
     |
1003 | /     pub fn mmap(
1004 | |         addr: *mut ::c_void,
1005 | |         len: ::size_t,
1006 | |         prot: ::c_int,
...    |
1009 | |         offset: off_t,
1010 | |     ) -> *mut ::c_void;
     | |______________________- similarly named function `mmap` defined here

error[E0425]: cannot find value `MREMAP_MAYMOVE` in crate `libc`
  --> src/mmap.rs:63:23
   |
63 |                 libc::MREMAP_MAYMOVE,
   |                       ^^^^^^^^^^^^^^ not found in `libc`

error[E0412]: cannot find type `MeasureImpl` in this scope
   --> src/time.rs:181:39
    |
181 | pub type TimeStats = TimeStatsGeneric<MeasureImpl>;
    |                                       ^^^^^^^^^^^ not found in this scope
    |
help: you might be missing a type parameter
    |
181 | pub type TimeStats<MeasureImpl> = TimeStatsGeneric<MeasureImpl>;
    |                   +++++++++++++

error[E0433]: failed to resolve: use of undeclared type `MeasureImpl`
   --> src/time.rs:167:14
    |
167 |     let t0 = MeasureImpl::base();
    |              ^^^^^^^^^^^ use of undeclared type `MeasureImpl`

error[E0433]: failed to resolve: use of undeclared type `MeasureImpl`
   --> src/time.rs:170:71
    |
170 | ...", label, MeasureImpl::elapsed(&t0)));
    |              ^^^^^^^^^^^ use of undeclared type `MeasureImpl`

Some errors have detailed explanations: E0412, E0425, E0433.
For more information about an error, try `rustc --explain E0412`.
error: could not compile `rlife` (bin "rlife") due to 5 previous errors
By the way, I had a similar problem with libc when I tried to compile rlife in Cygwin (Windows 10):
viewtopic.php?p=145968#p145968
The latest version of hex-gliders.db have 668 gliders from OT hexagonal rules.
The latest version of new-gliders.db (28991 gliders): here
My scripts: new-glider.py v0.2, nbsearch2a.py, collector.py v0.3

-Dmitry Maitak

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

Re: amling search program principles discussion / brain dump

Post by amling » July 16th, 2024, 3:18 pm

May13 wrote:
July 16th, 2024, 3:46 am
LaundryPizza03 wrote:
July 16th, 2024, 3:27 am
Okay, so I got rust and clap v4.5.9 and rustc v1.79.0 installed. Then I got errors about undeclared variables, functions, and object types:

Code: Select all

> cargo build --release                          
warning: `/Users/gb/rlife/.cargo/config` is deprecated in favor of `config.toml`
note: if you need to support cargo 1.38 or earlier, you can symlink `config` to `config.toml`
    Updating crates.io index
  Downloaded anstyle-query v1.0.0
  Downloaded byteorder v1.4.3
  Downloaded autocfg v1.1.0
  Downloaded is-terminal v0.4.9
  Downloaded crunchy v0.2.2
  Downloaded colorchoice v1.0.0
  Downloaded spliter v0.1.0
  Downloaded hex v0.4.3
  Downloaded errno v0.3.1
  Downloaded pest_generator v2.7.6
  Downloaded utf8parse v0.2.1
  Downloaded quote v1.0.31
  Downloaded unicode-ident v1.0.11
  Downloaded serde_json v1.0.103
  Downloaded syn v2.0.27
  Downloaded regex-automata v0.3.3
  Downloaded bitintr v0.3.0
  Downloaded libc v0.2.147
  Downloaded serde_derive v1.0.174
  Downloaded rustix v0.38.4
  Downloaded regex-syntax v0.7.4
  Downloaded regex v1.9.1
  Downloaded rayon v1.7.0
  Downloaded clap_builder v4.3.17
  Downloaded chrono v0.4.26
  Downloaded rayon-core v1.11.0
  Downloaded pest v2.7.6
  Downloaded hashbrown v0.12.3
  Downloaded crossbeam-channel v0.5.8
  Downloaded base64 v0.21.2
  Downloaded aho-corasick v1.0.2
  Downloaded uint v0.9.5
  Downloaded ucd-trie v0.1.6
  Downloaded serde v1.0.174
  Downloaded ryu v1.0.15
  Downloaded proc-macro2 v1.0.66
  Downloaded pest_meta v2.7.6
  Downloaded once_cell v1.18.0
  Downloaded num-traits v0.2.16
  Downloaded indexmap v1.9.3
  Downloaded getrandom v0.2.10
  Downloaded crossbeam-utils v0.8.16
  Downloaded crossbeam-epoch v0.9.15
  Downloaded clap v4.3.17
  Downloaded priority-queue v1.3.2
  Downloaded pest_derive v2.7.6
  Downloaded bitflags v2.3.3
  Downloaded thiserror-impl v1.0.55
  Downloaded thiserror v1.0.55
  Downloaded strsim v0.10.0
  Downloaded clap_derive v4.3.12
  Downloaded bincode v1.3.3
  Downloaded anstyle-parse v0.2.1
  Downloaded memoffset v0.9.0
  Downloaded json5 v0.4.1
  Downloaded itoa v1.0.9
  Downloaded iana-time-zone v0.1.57
  Downloaded either v1.9.0
  Downloaded crossbeam-queue v0.3.8
  Downloaded crossbeam-deque v0.8.3
  Downloaded cpufeatures v0.2.9
  Downloaded core-foundation-sys v0.8.4
  Downloaded clap_lex v0.5.0
  Downloaded anstyle v1.0.1
  Downloaded anstream v0.3.2
  Downloaded 65 crates (5.4 MB) in 1.08s
   Compiling proc-macro2 v1.0.66
   Compiling unicode-ident v1.0.11
   Compiling autocfg v1.1.0
   Compiling libc v0.2.147
   Compiling memchr v2.5.0
   Compiling cfg-if v1.0.0
   Compiling thiserror v1.0.55
   Compiling crossbeam-utils v0.8.16
   Compiling syn v1.0.109
   Compiling quote v1.0.31
   Compiling num-traits v0.2.16
   Compiling syn v2.0.27
   Compiling memoffset v0.9.0
   Compiling serde v1.0.174
   Compiling crossbeam-epoch v0.9.15
   Compiling rustix v0.38.4
   Compiling core-foundation-sys v0.8.4
   Compiling iana-time-zone v0.1.57
   Compiling thiserror-impl v1.0.55
   Compiling serde_derive v1.0.174
   Compiling errno v0.3.1
   Compiling bitflags v2.3.3
   Compiling ucd-trie v0.1.6
   Compiling scopeguard v1.2.0
   Compiling pest v2.7.6
   Compiling chrono v0.4.26
   Compiling ars_sane_derive v1.0.0 (/Users/gb/rlife/ars/sane_derive)
   Compiling utf8parse v0.2.1
   Compiling once_cell v1.18.0
   Compiling rayon-core v1.11.0
   Compiling serde_json v1.0.103
   Compiling ars_core v1.0.0 (/Users/gb/rlife/ars/core)
   Compiling pest_meta v2.7.6
   Compiling anstyle-parse v0.2.1
   Compiling is-terminal v0.4.9
   Compiling crossbeam-deque v0.8.3
   Compiling crossbeam-channel v0.5.8
   Compiling num_cpus v1.16.0
   Compiling getrandom v0.2.10
   Compiling indexmap v1.9.3
   Compiling itoa v1.0.9
   Compiling colorchoice v1.0.0
   Compiling crunchy v0.2.2
   Compiling ryu v1.0.15
   Compiling anstyle v1.0.1
   Compiling anstyle-query v1.0.0
   Compiling anstream v0.3.2
   Compiling rand_core v0.6.4
   Compiling pest_generator v2.7.6
   Compiling aho-corasick v1.0.2
   Compiling priority-queue v1.3.2
   Compiling crossbeam-queue v0.3.8
   Compiling hashbrown v0.12.3
   Compiling strsim v0.10.0
   Compiling ppv-lite86 v0.2.17
   Compiling clap_lex v0.5.0
   Compiling regex-syntax v0.7.4
   Compiling bitintr v0.3.0
   Compiling heck v0.4.1
   Compiling either v1.9.0
   Compiling rayon v1.7.0
   Compiling ars_rctl_core v1.0.0 (/Users/gb/rlife/ars/rctl/core)
   Compiling regex-automata v0.3.3
   Compiling clap_derive v4.3.12
   Compiling rand_chacha v0.3.1
   Compiling clap_builder v4.3.17
   Compiling pest_derive v2.7.6
   Compiling byteorder v1.4.3
   Compiling hex v0.4.3
   Compiling static_assertions v1.1.0
   Compiling uint v0.9.5
   Compiling clap v4.3.17
   Compiling json5 v0.4.1
   Compiling regex v1.9.1
   Compiling rand v0.8.5
   Compiling spliter v0.1.0
   Compiling ars_rctl_main v1.0.0 (/Users/gb/rlife/ars/rctl/main)
   Compiling bincode v1.3.3
   Compiling ars_aa v1.0.0 (/Users/gb/rlife/ars/aa)
   Compiling ars_rctl_derive v1.0.0 (/Users/gb/rlife/ars/rctl/derive)
   Compiling base64 v0.21.2
   Compiling rlife v1.0.0 (/Users/gb/rlife)
error[E0425]: cannot find function `mremap` in crate `libc`
    --> src/mmap.rs:59:19
     |
59   |               libc::mremap(
     |                     ^^^^^^ help: a function with a similar name exists: `mmap`
     |
    ::: /Users/gb/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libc-0.2.147/src/unix/mod.rs:1003:5
     |
1003 | /     pub fn mmap(
1004 | |         addr: *mut ::c_void,
1005 | |         len: ::size_t,
1006 | |         prot: ::c_int,
...    |
1009 | |         offset: off_t,
1010 | |     ) -> *mut ::c_void;
     | |______________________- similarly named function `mmap` defined here

error[E0425]: cannot find value `MREMAP_MAYMOVE` in crate `libc`
  --> src/mmap.rs:63:23
   |
63 |                 libc::MREMAP_MAYMOVE,
   |                       ^^^^^^^^^^^^^^ not found in `libc`

error[E0412]: cannot find type `MeasureImpl` in this scope
   --> src/time.rs:181:39
    |
181 | pub type TimeStats = TimeStatsGeneric<MeasureImpl>;
    |                                       ^^^^^^^^^^^ not found in this scope
    |
help: you might be missing a type parameter
    |
181 | pub type TimeStats<MeasureImpl> = TimeStatsGeneric<MeasureImpl>;
    |                   +++++++++++++

error[E0433]: failed to resolve: use of undeclared type `MeasureImpl`
   --> src/time.rs:167:14
    |
167 |     let t0 = MeasureImpl::base();
    |              ^^^^^^^^^^^ use of undeclared type `MeasureImpl`

error[E0433]: failed to resolve: use of undeclared type `MeasureImpl`
   --> src/time.rs:170:71
    |
170 | ...", label, MeasureImpl::elapsed(&t0)));
    |              ^^^^^^^^^^^ use of undeclared type `MeasureImpl`

Some errors have detailed explanations: E0412, E0425, E0433.
For more information about an error, try `rustc --explain E0412`.
error: could not compile `rlife` (bin "rlife") due to 5 previous errors
By the way, I had a similar problem with libc when I tried to compile rlife in Cygwin (Windows 10):
viewtopic.php?p=145968#p145968
It's very easy to write linuxisms when you're writing on linux and trying to do some very finicky things. I did a bit of poking around and got cross compilation to windows "working" (it builds an executable but I have not tried to have it run). Alas no luck for macOS cross compilation, at least not yet.

I have rearranged materially how the platform-specific code is done so it's all full version on linux and stripped down on anything else. In particular no "MeasureV2" (uses rusage APIs to show more interesting stats about how searches are spending their time) and perhaps most dangerously, no mmap (and mremap) memory management so it's back to the Vec version and its crazy fragmentation and overhead. I have verified this passes `cargo check` both on linux and cross-compiling for windows. I will verify `cargo build --release` at least runs as well before I publish it. Hopefully it will work on on macs as well as the non-linux version won't include most of the code in the above errors.

Going forward this is sort of an unfortunate state of affairs as it's quite easy for me to break it and I'm not gonna check cross compilation every time I make any change. I guess I shall try to remember to when I'm monkeying with the platform-specific code and hope for the best. I will report back and/or edit this post once I have finished `cargo build --release` and pushed the new code.

EDIT: `cargo build --release` for new code for windows finished. I've pushed `ab7ac50d9bb8` to codeberg which will hopefully get it compiling on windows and macOS with no hacking necessary. Be aware that I believe the build takes quite a bit of memory and if it hits a memory limit and dies it (cargo/rust) may not produce very helpful error messages. May13 already hit this (we believe) and had to strip the "main" function down to just individual subcommands one at a time to build separate binaries for each subcommand.

User avatar
LaundryPizza03
Posts: 2412
Joined: December 15th, 2017, 12:05 am
Location: Unidentified location "https://en.wikipedia.org/wiki/Texas"

Re: amling search program principles discussion / brain dump

Post by LaundryPizza03 » July 17th, 2024, 12:35 am

Thanks, I can use it now. Although the help screen is very barebones, not explaining for example what the various options do. Compare LLS's dialog, which describes each and every option in detail.

Code: Select all

x = 4, y = 3, rule = B3-q4z5y/S234k5j
2b2o$b2o$2o!
LaundryPizza03 at Wikipedia

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

Re: amling search program principles discussion / brain dump

Post by amling » July 17th, 2024, 1:04 am

LaundryPizza03 wrote:
July 17th, 2024, 12:35 am
Thanks, I can use it now. Although the help screen is very barebones, not explaining for example what the various options do. Compare LLS's dialog, which describes each and every option in detail.
Yes, well, see previous commentary about my (in)ability to make anything resembling user-friendly software. The "help screen" is just clap dumping a list of the subcommands and option names it has been configured to parse. There are so many, they change so often, and their behaviors are so complexly intertwined with the details of how LLSSS searches in general it would be unimaginable (at least to me) to meaningfully document them. In some cases there are things resembling release notes earlier on this thread attempting to explain some of what they do.

That said, I don't think trying to figure out how it operates in a vacuum is a plausible way to go about learning about LLSSS, at least as it stands today. If you read some of the exchanges up-thread you'll see some examples of people bringing desired setups or problems to me for me to translate to invocations, and explain, in my own limited capacity, what the various parts of the invocation do so that maybe they could be customized or modified. Given the wild mess of weird features and the extremely complex nature of how the engine works I think this interactive process is a far better way to get into running searches with LLSSS.

By the way, you still haven't answered my implied question from earlier about what searches you want to run or CA problems you want to solve? I might replace it with a more direct and more meta question: Why do you even want to learn to run LLSSS searches in the first place? What do you think it's going to do for you?

User avatar
LaundryPizza03
Posts: 2412
Joined: December 15th, 2017, 12:05 am
Location: Unidentified location "https://en.wikipedia.org/wiki/Texas"

Re: amling search program principles discussion / brain dump

Post by LaundryPizza03 » July 18th, 2024, 1:45 pm

amling wrote:
July 17th, 2024, 1:04 am
LaundryPizza03 wrote:
July 17th, 2024, 12:35 am
Thanks, I can use it now. Although the help screen is very barebones, not explaining for example what the various options do. Compare LLS's dialog, which describes each and every option in detail.
Yes, well, see previous commentary about my (in)ability to make anything resembling user-friendly software. The "help screen" is just clap dumping a list of the subcommands and option names it has been configured to parse. There are so many, they change so often, and their behaviors are so complexly intertwined with the details of how LLSSS searches in general it would be unimaginable (at least to me) to meaningfully document them. In some cases there are things resembling release notes earlier on this thread attempting to explain some of what they do.

That said, I don't think trying to figure out how it operates in a vacuum is a plausible way to go about learning about LLSSS, at least as it stands today. If you read some of the exchanges up-thread you'll see some examples of people bringing desired setups or problems to me for me to translate to invocations, and explain, in my own limited capacity, what the various parts of the invocation do so that maybe they could be customized or modified. Given the wild mess of weird features and the extremely complex nature of how the engine works I think this interactive process is a far better way to get into running searches with LLSSS.

By the way, you still haven't answered my implied question from earlier about what searches you want to run or CA problems you want to solve? I might replace it with a more direct and more meta question: Why do you even want to learn to run LLSSS searches in the first place? What do you think it's going to do for you?
What would I do if I want to find corner pieces for a grayship with all of the front and sides known? Specifically this one?

Code: Select all

x = 4, y = 3, rule = B3-q4z5y/S234k5j
2b2o$b2o$2o!
LaundryPizza03 at Wikipedia

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

Re: amling search program principles discussion / brain dump

Post by amling » July 18th, 2024, 6:23 pm

LaundryPizza03 wrote:
July 18th, 2024, 1:45 pm
What would I do if I want to find corner pieces for a grayship with all of the front and sides known? Specifically this one?
There are many, many ways you could try to set this up but the simplest by far is just plain old fixed board search. For this sort of search you need a picture like this (1.in):

Code: Select all

| ....................*******.*********************** | ...................********..********************** |
| ....................*********.********************* | .....................*******..********************* |
| ....................*********.********************* | .....................*******..********************* |
| ....................*******.*********************** | ...................********..********************** |
| .....................*..**.*.********************** | .....................****..*.********************** |
| ......................*...**.********************** | ....................*...**.*..********************* |
| .....................*..**.*.********************** | .....................****..*.********************** |
| ....................*******.*********************** | ...................********..********************** |
| ....................*********.********************* | .....................*******..********************* |
| ....................*********.********************* | .....................*******..********************* |
| ....................*******.*********************** | ...................********..********************** |
| .....................*..**.*.********************** | .....................****..*.********************** |
| ......................*...**.********************** | ....................*...**.*..********************* |
| .....................*..**.*.********************** | .....................****..*.********************** |
| ....................*******.*********************** | ...................********..********************** |
| ....................*********.********************* | .....................*******..********************* |
| ....................*********.********************* | .....................*******..********************* |
| ....................*******.*********************** | ...................********..********************** |
| .....................*..**.*.********************** | .....................****..*.********************** |
| ......................*...**.********************** | ....................*...**.*..********************* |
| .....................*..**.*.********************** | .....................****..*.********************** |
| ....................*******.*********************** | ...................********..********************** |
| ....................*********.********************* | .....................*******..********************* |
| ....................*********.********************* | .....................*******..********************* |
| ....................*******.*********************** | ...................********..********************** |
| ...................??????????????****************** | ...................??????????????****************** |
| ...................??????????????****************** | ...................??????????????****************** |
| ...................??????????????****************** | ...................??????????????****************** |
| ...................??????????????**.*.**.*.**.*.**. | ...................??????????????*.**.*.**.*.**.*.* |
| ...................??????????????*...**...**...**.. | ...................??????????????.**...**...**...** |
| ...................??????????????**.*.**.*.**.*.**. | ...................??????????????*.**.*.**.*.**.*.* |
| ...................??????????????****************** | ...................??????????????****************** |
| ...................??????????????.................. | ...................??????????????.................. |
| ...................??????????????.................. | ...................??????????????.................. |
| ...................??????????????.................. | ...................??????????????.................. |
| ...................??????????????.................. | ...................??????????????.................. |
| ...................??????????????.................. | ...................??????????????.................. |
| ...................??????????????.................. | ...................??????????????.................. |
| ...................??????????????.................. | ...................??????????????.................. |
| ...................??????????????.................. | ...................??????????????.................. |
With this exact input file you could run a search like...

Code: Select all

rlife llsss c2-s2s --rule B2458/S134678 1.in 03 03 03
to get partials like...

Code: Select all

20240718 15:01:29 [INFO] Firstest:
20240718 15:01:29 [INFO] | .......*..**.*.********* | .......****..*.********* |
20240718 15:01:29 [INFO] | ......*******.********** | .....********..********* |
20240718 15:01:29 [INFO] | ......*********.******** | .......*******..******** |
20240718 15:01:29 [INFO] | .....*.*******.*.******* | .......******..**.****** |
20240718 15:01:29 [INFO] | ......******..**..****** | ....*******.************ |
20240718 15:01:29 [INFO] | .....******...*..******* | .....*******.*..*.****** |
20240718 15:01:29 [INFO] | ......***.**.*********** | .....****..************* |
20240718 15:01:29 [INFO] | ......***.**.*********** | .....*.*..*.************ |
20240718 15:01:29 [INFO] | .....**.****..****.**.*. | .....*****.*******.*.**. |
20240718 15:01:29 [INFO] | ...*.*****...****.**...* | ..*...*...*.*.***...**.. |
20240718 15:01:29 [INFO] | ...***.*..*.....**.**.*. | ...***..*******..*.*.**. |
20240718 15:01:29 [INFO] | ...****.*.*****.******** | ....***..*.*.*.*.*.***** |
20240718 15:01:29 [INFO] | ...***...*****..**...... | ...**************.*..... |
20240718 15:01:29 [INFO] | ...*.**.*******.*....... | ..*....*******.......... |
20240718 15:01:29 [INFO] | .....***.**********..... | .....*.*********..**.... |
20240718 15:01:29 [INFO] | ......*..*******.**..... | .....*.*********..*..... |
20240718 15:01:29 [INFO] | ......**..*.*****..*.... | .....***.*..****.****... |
20240718 15:01:29 [INFO] | .....**.*.**.****.**.... | .....***.*.*.*******.... |
20240718 15:01:29 [INFO] | ......*..******..**.*... | ........***..**.*.*..... |
20240718 15:01:29 [INFO] | ....*******..***.***.... | ....*********..****..... |
20240718 15:01:29 [INFO] | ......*......*..****.... | ....**....*.**.****..... |
20240718 15:01:29 [INFO] | ......******.**..***.... | ....******.******.*..... |
20240718 15:01:29 [INFO] | ....***..****.**..**.... | ....**..*.*.**..***..... |
20240718 15:01:29 [INFO] | ...****.*..*..***.**.... | ...****.*..*...**.*..... |
20240718 15:01:29 [INFO] | ..**.**********.****.... | ..*.****........***..... |
20240718 15:01:29 [INFO] | ...*****.**.**.*****.... | ..************.****..... |
20240718 15:01:29 [INFO] | ...*.********.***.**.... | ..*.***..***..**.*..*... |
20240718 15:01:29 [INFO] | ..****..*.**.***...**... | ..**.**..***.*..***..... |
20240718 15:01:29 [INFO] | ...*..*.****.*..**.***.. | ...*..**...**.***.*.**.. |
20240718 15:01:29 [INFO] | ....***...*.....*..**... |                          |
Some of this is already explained up thread, but the quick version is:

"llsss" picks fixed board search.

"c2-s2s" picks the geometry, c/2 oriented west and searching southward. If you go after a back corner you might choose instead c2-f2b (c/2 oriented north) which in most cases performs better than s2s but is not possible for a front corner. You could also go after a front corner with c2-b2f (c/2 oriented southward) but in most cases b2f performs worse than s2s.

"--rule B2458/S134678" picks, uh, the rule. This defaults to B3/S23.

"1.in" is the "picture" you want to search. This picture shows each generation and has a block of question marks that marks the unknown part of the search. I've picked a relative alignment at random between the known front and side edges and placed question marks in between (this is probably the biggest weakness of setting it up like this, namely that you have to pick the alignment explicitly). The entire file has to be a UVW prism and the question marks also need to be a UVW prism that extends to the W bottom of the picture. For c2-s2s that means identically-positioned rectangles in both generations and that the question marks reach the bottom of the file. The search will continue "off the bottom" in the obvious way (filling in the side boundary conditions with all zeros, at least by default).

"03 03 03" are the top, left, and right padding amounts. The variable part of the search will be expanded around the question marks this much. Top pad is measured in W rows (for c2-s2s that's Y rows, for c2-f2b or c2-b2f it's "half Y rows"). Left and right pad are measured in U columns (same as X in normal geometries). I usually expand the paddings together until I get a result or it fills memory and dies and then fiddle around based on the sorts of partials I was seeing. E.g. top pad is often less important and frequently a lot of it hurts memory a lot more than it improves results.

Not pictured:

No "--ends". The default is "--ends zero" which looks for patterns terminating in zeros at the bottom which is what we want. If the search finds something the output will include "End" in it somewhere.

No "ulimit". The search will happily fill as much memory as it wants, forever. I have no idea what will happen on macos or how to stop it at a limit (ulimit is what I use on linux).

User avatar
LaundryPizza03
Posts: 2412
Joined: December 15th, 2017, 12:05 am
Location: Unidentified location "https://en.wikipedia.org/wiki/Texas"

Re: amling search program principles discussion / brain dump

Post by LaundryPizza03 » July 18th, 2024, 11:58 pm

amling wrote:
July 18th, 2024, 6:23 pm
No "ulimit". The search will happily fill as much memory as it wants, forever. I have no idea what will happen on macos or how to stop it at a limit (ulimit is what I use on linux).
ulimit does not work on macOS.

Code: Select all

x = 4, y = 3, rule = B3-q4z5y/S234k5j
2b2o$b2o$2o!
LaundryPizza03 at Wikipedia

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

Re: amling search program principles discussion / brain dump

Post by amling » July 19th, 2024, 3:27 pm

I've just pushed `2345a0101a81` which includes:

(*) `--constraint statorless`. Only allowed for oscillator searches and refuses any cell to be on in all generations.

(*) `--maxpop GG:PP`. A semi-usable version of the "minpop" hacks ("min" in that they solved the CA problem of minimum pop for a given type of pattern but "max" in that the searches are constrained to a max).



As an example, with 2c4a.in:

Code: Select all

|     |     | 111 | ... |
| 111 | ... | ... | ... |
| ... | ... | ... | ... |
| ... | ... |     |     |
You could run:

Code: Select all

rlife llsss-recentering-wao 2c4-f2b 2c4a.in 00 --wao-left-pad 00 --wao-right-pad 00 --wao-idx ALL --max-pop 00:12 --ends none XX
rlife llsss-recentering-wao 2c4-f2b 2c4a.in 00 --wao-left-pad 00 --wao-right-pad 00 --wao-idx ALL --max-pop 01:12 --ends none XX
to search for pop 12 or less 2c/4 asymmetric ships. The first would get:

Code: Select all

20240719 11:56:32 [INFO] End (pop 12) [best gen (9, 1) < us (12, 0)]:
20240719 11:56:32 [INFO] |           |           | ......... | ......... |
20240719 11:56:32 [INFO] | ......... | ......... | ......... | ......... |
20240719 11:56:32 [INFO] | ......... | ......... | ....*.... | ...***... |
20240719 11:56:32 [INFO] | ....*.... | ...***... | ...***... | ...*..*.. |
20240719 11:56:32 [INFO] | ...***... | ..*..*... | ...*.**.. | ...*..... |
20240719 11:56:32 [INFO] | ..**.*... | .....*... | ....***.. | ...*..... |
20240719 11:56:32 [INFO] | ..***.... | .....*... | ....**... | ....*.*.. |
20240719 11:56:32 [INFO] | ...**.... | ..*.*.... | ......... | ......... |
20240719 11:56:32 [INFO] | ......... | ......... | ......... | ......... |
20240719 11:56:32 [INFO] | ......... | ......... |           |           |
20240719 11:56:32 [INFO] End (pop 12) [best gen (9, 1) < us (12, 0)]:
20240719 11:56:32 [INFO] |           |           | ......... | ......... |
20240719 11:56:32 [INFO] | ......... | ......... | ......... | ......... |
20240719 11:56:32 [INFO] | ......... | ......... | ....*.... | ...***... |
20240719 11:56:32 [INFO] | ....*.... | ...***... | ...***... | ..*..*... |
20240719 11:56:32 [INFO] | ...***... | ...*..*.. | ..**.*... | .....*... |
20240719 11:56:32 [INFO] | ...*.**.. | ...*..... | ..***.... | .....*... |
20240719 11:56:32 [INFO] | ....***.. | ...*..... | ...**.... | ..*.*.... |
20240719 11:56:32 [INFO] | ....**... | ....*.*.. | ......... | ......... |
20240719 11:56:32 [INFO] | ......... | ......... | ......... | ......... |
20240719 11:56:32 [INFO] | ......... | ......... |           |           |
while the second would get:

Code: Select all

20240719 11:57:03 [INFO] End (pop 9):
20240719 11:57:03 [INFO] |           |           | ......... | ......... |
20240719 11:57:03 [INFO] | ......... | ......... | ......... | ......... |
20240719 11:57:03 [INFO] | ......... | ......... | ....*.... | ...***... |
20240719 11:57:03 [INFO] | ....*.... | ...***... | ...***... | ...*..*.. |
20240719 11:57:03 [INFO] | ...***... | ..*..*... | ...*.**.. | ...*..... |
20240719 11:57:03 [INFO] | ..**.*... | .....*... | ....***.. | ...*..... |
20240719 11:57:03 [INFO] | ..***.... | .....*... | ....**... | ....*.*.. |
20240719 11:57:03 [INFO] | ...**.... | ..*.*.... | ......... | ......... |
20240719 11:57:03 [INFO] | ......... | ......... | ......... | ......... |
20240719 11:57:03 [INFO] | ......... | ......... |           |           |
20240719 11:57:03 [INFO] End (pop 9):
20240719 11:57:03 [INFO] |           |           | ......... | ......... |
20240719 11:57:03 [INFO] | ......... | ......... | ......... | ......... |
20240719 11:57:03 [INFO] | ......... | ......... | ....*.... | ...***... |
20240719 11:57:03 [INFO] | ....*.... | ...***... | ...***... | ..*..*... |
20240719 11:57:03 [INFO] | ...***... | ...*..*.. | ..**.*... | .....*... |
20240719 11:57:03 [INFO] | ...*.**.. | ...*..... | ..***.... | .....*... |
20240719 11:57:03 [INFO] | ....***.. | ...*..... | ...**.... | ..*.*.... |
20240719 11:57:03 [INFO] | ....**... | ....*.*.. | ......... | ......... |
20240719 11:57:03 [INFO] | ......... | ......... | ......... | ......... |
20240719 11:57:03 [INFO] | ......... | ......... |           |           |
...
20240719 11:57:04 [INFO] End (pop 11):
20240719 11:57:04 [INFO] |             |             | ........... | ........... |
20240719 11:57:04 [INFO] | ........... | ........... | ........... | ........... |
20240719 11:57:04 [INFO] | ........... | ........... | .....*..... | ....***.... |
20240719 11:57:04 [INFO] | .....*..... | ....***.... | ....***.... | ....*..*... |
20240719 11:57:04 [INFO] | ....***.... | ...*..*.... | ....*.**... | ....*...... |
20240719 11:57:04 [INFO] | ...**.*.... | ......*.... | .....***... | ....*...*.. |
20240719 11:57:04 [INFO] | ...***..... | ..*...*.... | .....***... | ....*...... |
20240719 11:57:04 [INFO] | ...***..... | ......*.... | .....**.... | .....*.*... |
20240719 11:57:04 [INFO] | ....**..... | ...*.*..... | ........... | ........... |
20240719 11:57:04 [INFO] | ........... | ........... | ........... | ........... |
20240719 11:57:04 [INFO] | ........... | ........... |             |             |
20240719 11:57:04 [INFO] End (pop 11):
20240719 11:57:04 [INFO] |             |             | ........... | ........... |
20240719 11:57:04 [INFO] | ........... | ........... | ........... | ........... |
20240719 11:57:04 [INFO] | ........... | ........... | .....*..... | ....***.... |
20240719 11:57:04 [INFO] | .....*..... | ....***.... | ....***.... | ...*..*.... |
20240719 11:57:04 [INFO] | ....***.... | ....*..*... | ...**.*.... | ......*.... |
20240719 11:57:04 [INFO] | ....*.**... | ....*...... | ...***..... | ..*...*.... |
20240719 11:57:04 [INFO] | .....***... | ....*...*.. | ...***..... | ......*.... |
20240719 11:57:04 [INFO] | .....***... | ....*...... | ....**..... | ...*.*..... |
20240719 11:57:04 [INFO] | .....**.... | .....*.*... | ........... | ........... |
20240719 11:57:04 [INFO] | ........... | ........... | ........... | ........... |
20240719 11:57:04 [INFO] | ........... | ........... |             |             |
So what's going on here? All of this is just running a 2c/4 f2b WAO search from zeros with arbitrary width:

Code: Select all

rlife llsss-recentering-wao 2c4-f2b 2c4a.in 00 --wao-left-pad 00 --wao-right-pad 00 --wao-idx ALL ... XX
This middle bit is the interesting part:

Code: Select all

... --max-pop 00:12 --ends none ...
... --max-pop 01:12 --ends none ...
It disables the default zero ends and enables the max-pop code which does three things:

(*) Filters the ongoing search to only contains parts of partials that are 12 or fewer cells in gen 00 or gen 01. Note that which generations need to be run depends on geometry (e.g. for 2c/4 gen 02 is same as gen 00). Also note the the root labels have to be 0, 1, or 2 and indicate the weight of that spine so it can be set up to count even or odd searches correctly.

(*) Outputs completed patterns that meet the same bound. Patterns which meet an even smaller bound in a different generation or the same bound in an earlier generation are tagged so it's clear they're duplicated. No sort of symmetry checking is done.

(*) Halts the search if ever there is a horizontal strip of zeros that is globally there in all partials. This will allow searches to terminate as long as the population bound is less than twice the smallest result.



As another example, with c3o.in:

Code: Select all

|      |      | 1222 |
| .... | .... | .... |
| .... | .... | .... |
| .... |      |      |
You could run:

Code: Select all

rlife llsss-recentering-wao c3-f2b c3o.in 00 --left-edge odd --wao-left-edge-errors --wao-left-pad 00 --wao-right-pad 00 --wao-idx ALL --max-pop 00:34 --ends none XX
rlife llsss-recentering-wao c3-f2b c3o.in 00 --left-edge odd --wao-left-edge-errors --wao-left-pad 00 --wao-right-pad 00 --wao-idx ALL --max-pop 01:34 --ends none XX
rlife llsss-recentering-wao c3-f2b c3o.in 00 --left-edge odd --wao-left-edge-errors --wao-left-pad 00 --wao-right-pad 00 --wao-idx ALL --max-pop 02:34 --ends none XX
to search for pop 34 or less c/3 odd ships. The first would get:

Code: Select all

20240719 12:12:50 [INFO] End (pop 34):
20240719 12:12:50 [INFO] | .......... | .......... | .......... |
20240719 12:12:50 [INFO] | .......... | .......... | .......... |
20240719 12:12:50 [INFO] | *......... | *......... | **........ |
20240719 12:12:50 [INFO] | .*........ | **........ | **........ |
20240719 12:12:50 [INFO] | ..*....... | ..*....... | ..*....... |
20240719 12:12:50 [INFO] | **........ | **........ | .......... |
20240719 12:12:50 [INFO] | .......... | ***....... | ..*....... |
20240719 12:12:50 [INFO] | ..**...... | ..*....... | ..**.*.... |
20240719 12:12:50 [INFO] | .*...*.... | .*..***... | .*.**.*... |
20240719 12:12:50 [INFO] | .*...**... | .**..**... | .***...*.. |
20240719 12:12:50 [INFO] | .*.....*.. | .*..*..*.. | .*.*.**... |
20240719 12:12:50 [INFO] | .*.**.*... | ..*....... | .......... |
20240719 12:12:50 [INFO] | .......... | .......... | .......... |
20240719 12:12:50 [INFO] | .......... | .......... |            |
This is pretty similar but...

(*) We've added `--left-edge odd` and also `--wao-left-edge-errors` to allow WAO to place first errors inside that left edge.

(*) We've labelled with roots "1222" instead since all but the leftmost spine should be double counted.

(*) We have to run gen 00, 01, and 02 for c/3 if we want to find everything.



As a final example, with p3.in:

Code: Select all

| 111 | 111 | 111 |
| ... | ... | ... |
| ... | ... | ... |
| ... | ... | ... |
You could run:

Code: Select all

rlife llsss-recentering-wao p3 p3.in 00 --wao-left-pad 00 --wao-right-pad 00 --wao-idx ALL --constraint statorless --max-pop 00:12 --ends none XX
to search for statorless p3 oscillators up to 12 cells. This is very similar but we've just added `--constraint statorless` to only find statorless oscillators and for geometry p3 we only need to check gen 00.



This is of course all very complicated but at least it's now published and can stop bitrotting every time I change something on the master branch. Please, please, if you're going to try to use any of this mess, drop your plans/ideas here for a consult (and/or read the various posts above when this feature was first in the works, but even so I'd still recommend a consult).

AforAmpere
Posts: 1357
Joined: July 1st, 2016, 3:58 pm

Re: amling search program principles discussion / brain dump

Post by AforAmpere » July 23rd, 2024, 2:17 pm

What would be your recommended way of setting up a search that would be guaranteed to find a ship of a given width if it existed? For instance, in qfind, searching with a given speed, symmetry and width would fully cover those parameters. I’m not sure if there’s a way to set up the picture to do that with LLSSS, but I also don’t understand the picture format fully. I’ve been doing searches setting one cell on the front row, and moving which column it is in, but it seems like those could potentially be incomplete because of the possibility of two cells being in that front row being a distinct setup (from some testing it does seem like specifying more cells in the front has led to longer searches).
I manage the 5S project, which collects all known spaceship speeds in Isotropic Non-totalistic rules. I also wrote EPE, a tool for searching in the INT rulespace.

Things to work on:
- Find (7,1)c/8 and 9c/10 ships in non-B0 INT.
- EPE improvements.

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

Re: amling search program principles discussion / brain dump

Post by amling » July 23rd, 2024, 7:13 pm

AforAmpere wrote:
July 23rd, 2024, 2:17 pm
What would be your recommended way of setting up a search that would be guaranteed to find a ship of a given width if it existed? For instance, in qfind, searching with a given speed, symmetry and width would fully cover those parameters. I’m not sure if there’s a way to set up the picture to do that with LLSSS, but I also don’t understand the picture format fully. I’ve been doing searches setting one cell on the front row, and moving which column it is in, but it seems like those could potentially be incomplete because of the possibility of two cells being in that front row being a distinct setup (from some testing it does seem like specifying more cells in the front has led to longer searches).
This is not something LLSSS has been optimized for as most of the time this sort of ground is well-covered by other people and other programs and I have focused on solving weirder problems.

Let's consider a concrete example, like verifying there are no width 11 c/3 ships.

Even from the beginning (of LLSSS development) with an input of all zeros like (1.in):

Code: Select all

| ............... | ............... | ............... |
| ............... | ............... | ............... |
| ..???????????.. | ..???????????.. | ..???????????.. |
You could run a search and realize pretty quickly it was going nowhere:

Code: Select all

rlife llsss c3-f2b 1.in 00 00 00
These days the "unique" partials make it clear when e.g. that search reaches this:

Code: Select all

20240723 15:51:31 [INFO] Unique:
20240723 15:51:31 [INFO] | ............... | ............... | ............... |
20240723 15:51:31 [INFO] | ............... | ............... | ............... |
20240723 15:51:31 [INFO] | ............... | .....?...?..... | .....?...?..... |
20240723 15:51:31 [INFO] | ....???.???.... | ....???.???.... | ....???????.... |
20240723 15:51:31 [INFO] | ....???????.... | ...?????????... | ...?????????... |
20240723 15:51:31 [INFO] | ...?????????... | ...?????????... | ...?????????... |
20240723 15:51:31 [INFO] | ...?????????... | ...?????????... | ...?????????... |
20240723 15:51:31 [INFO] | ..???????????.. | ..???????????.. | ..???????????.. |
20240723 15:51:31 [INFO] | ..???????????.. | ..???????????.. | ..???????????.. |
20240723 15:51:31 [INFO] | ..???????????.. | ..???????????.. | ..???????????.. |
20240723 15:51:31 [INFO] | ..???????????.. | ..???????????.. | ..???????????.. |
20240723 15:51:31 [INFO] | ..???????????.. | ..???????????.. | ..???????????.. |
20240723 15:51:31 [INFO] | ..???????????.. | ..???????????.. | ..???????????.. |
20240723 15:51:31 [INFO] | ..???????????.. | ..???????????.. | ..???????????.. |
20240723 15:51:31 [INFO] | ..???????????.. | ..???????????.. | ..???????????.. |
20240723 15:51:31 [INFO] | ..???????????.. | ..???????????.. | ..???????????.. |
20240723 15:51:31 [INFO] | ..???????????.. | ..???????????.. | ..???????????.. |
20240723 15:51:31 [INFO] | ..???????????.. | ..???????????.. | ..???????????.. |
20240723 15:51:31 [INFO] | ..???????????.. | ..???????????.. | ..???????????.. |
20240723 15:51:31 [INFO] | ..???????????.. | ..???????????.. | ..???????????.. |
20240723 15:51:31 [INFO] | ..???????????.. | ..???????????.. | ..???????????.. |
20240723 15:51:31 [INFO] | ..???????????.. | ..???????????.. | ..???????????.. |
20240723 15:51:31 [INFO] | ..???????????.. | ..???????????.. | ..???????????.. |
that there must be no nonzero solutions (as the first W row is all zeros in all partials now). Even back before unique partials existed, I wrote some hacks to detect this sort of thing, and even partially filter the result as it went to discard pieces that were only used in useless partials. This is the "W cycle avoiding filter" discussed in some places above, so named because it does something slightly more general than avoiding just this cycle of all zeros. If we include it in this search as:

Code: Select all

rlife llsss c3-f2b 1.in --filters wcaf 00 00 00
It halts the search at that exact moment (as well as having stripped out some useless parts of the search earlier than that).



There is another, better way of attempt to break cycles like this: "wrong answers only", but it's only for the recentering search mode (as of now anyway) and so isn't well suited to the problem of fixed width searches.

You can run fixed width searches with the recentering mode, it's just inefficient. As an example, with an input like this (2.in):

Code: Select all

|                 |                 | uuuuuuuuuuuuuuu |
| ............... | ............... | ............... |
| ............... | ............... | ............... |
| ............... |                 |                 |
You could run:

Code: Select all

rlife llsss-recentering-wao c3-f2b 2.in 00 --wao-left-pad 00 --wao-right-pad 00 --wao-idx ALL 12
"WAO" implements a fancier version of what you were doing with forcing individual cells in the first row on, but with recentering, with something analogous to wildcards, and somewhat more efficiently than writing all the input files by hand. It therefore operates somewhat differently in general than WCAF, but the net result is the same here (stopping at the same place with the same longest partial).



If you're really specifically and exactly aiming to rule out ships at some constant width then I would go with WCAF fixed board over recentering WAO pseudo-fixed-board as it's way less confusing. I have not tested performance specifically but I would bet the WCAF fixed board will be faster in general.

Either way feel free to drop your exact input files and invocation here for a quick double check.

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

Re: amling search program principles discussion / brain dump

Post by amling » July 29th, 2024, 1:33 pm

So many weeks of searching on the 1TB machine with nothing to show for it... I ran a bunch of 2c/10d searches trying to get a better continuation of the reduction to c/5d with no great results. I ran a bunch of 4c/8 searches trying to complete that back corner for two 2c/1 sideways edges. There was a single minimum depth reduction to 2c/4 which is pretty clearly unsolvable in 2c/4 at any width or in any variation I could cook up.

The problem I'm getting destroyed by is that nearly all search lines are dying by reaching 2^32 entries in a bcol and then I have to stop and rerun them with BIDX=usize which takes up twice as much memory and so they end quickly anyway. I have finally sketched a version of the code that has some form of abstraction for col storage and so can switch (at compile time) between old BIDX=u32, old BIDX=usize, and a new fancier storage that will store in u32s but then will pack any overflown bits separately (so if the bcol requires e.g. 34 bit indices then you get one u32 plus 2/64 of a u64 to store each).

Among the problems with this are: I'm worried the abstraction will cost something, I'm worried the new implementation has bugs (it's very hard to test, what with needing >2^32 size bcol to give it a real battle test), I'm worried the new implementation will be slow even ignoring abstraction cost, etc. It's abstracted over the size of the "lower" bits which will be u32 in real use but I did give it some decent testing (for correctness) with u8 and u16 lower bits. I'm still worried there could be a bug that somehow only happens for u32 lower bits but of course I cannot actually imagine/find it. I'm just now starting some benchmark and proper testing searches (which may reach 2^32 size bcols) on the 1 TB machine and we'll see how it goes.

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

Re: amling search program principles discussion / brain dump

Post by amling » July 31st, 2024, 12:21 pm

amling wrote:
July 29th, 2024, 1:33 pm
I'm just now starting some benchmark and proper testing searches (which may reach 2^32 size bcols) on the 1 TB machine and we'll see how it goes.
Dang it. Pop 140 p3 statorless completed with biggest bcol of ~2.8B < 2^32 so I guess I gotta go pick a different test search.

lordlouckster
Posts: 29
Joined: July 13th, 2022, 4:02 pm

Re: amling search program principles discussion / brain dump

Post by lordlouckster » August 5th, 2024, 12:17 pm

How can I extend this 2c/7 partial in LLSSS, and should I?

Code: Select all

x = 11, y = 51, rule = B36/S245
2b3o$7o$o2b4o$bo4bo$4bo$b2o$2b3o2$2b4o$3bob2o$2bobo$2b2o2bo$2b2obo2bo$
2b3ob3o$2b2o3b2o$4b2ob2o$3b3o$3bob2o$2b2ob2obo$6b2o$2b4o2bo$3b3o2b2o$b
o2bob2obo$2b4o$2b5o2bo$3bob2ob2o$5bo2bo$5bobo$6b3o$2b2o2bobo$2b3o$2b2o
$3bobo$3bo2b2o$2b3obo$6b2o$3b3o2b2o$bo3bo2b3o$2bo2b2o2bo$6ob3o$4b5o$3b
o3bo$2b2ob2o$3b2o2bo$3bo$3b2o$2b2ob2o$2bo2bo$2b6o$4b3o$6b2o!
I have gruelingly tried to create an input file, but I get "no entry found for key".
Attachments
2.in.txt
An input file in case no one wants it
(6.81 KiB) Downloaded 9 times

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

Re: amling search program principles discussion / brain dump

Post by amling » August 5th, 2024, 10:31 pm

lordlouckster wrote:
August 5th, 2024, 12:17 pm
How can I extend this 2c/7 partial in LLSSS, and should I?

Code: Select all

x = 11, y = 51, rule = B36/S245
2b3o$7o$o2b4o$bo4bo$4bo$b2o$2b3o2$2b4o$3bob2o$2bobo$2b2o2bo$2b2obo2bo$
2b3ob3o$2b2o3b2o$4b2ob2o$3b3o$3bob2o$2b2ob2obo$6b2o$2b4o2bo$3b3o2b2o$b
o2bob2obo$2b4o$2b5o2bo$3bob2ob2o$5bo2bo$5bobo$6b3o$2b2o2bobo$2b3o$2b2o
$3bobo$3bo2b2o$2b3obo$6b2o$3b3o2b2o$bo3bo2b3o$2bo2b2o2bo$6ob3o$4b5o$3b
o3bo$2b2ob2o$3b2o2bo$3bo$3b2o$2b2ob2o$2bo2bo$2b6o$4b3o$6b2o!
I have gruelingly tried to create an input file, but I get "no entry found for key".
I'm out of town and stuck on my mobile phone alone which I was unable to convince to download and display that file sanely. Squinting at the wrapped version of it I suspect you've got the shape at the bottom with the question marks bad. An example simplest sort of shape I would expect would be something like...

Code: Select all

|     |     |     |     | ... | ... | ... |
| ... | ... | ... | ... | ... | ... | ... |
| ... | ... | ... | ... | ... | ... | ... |
| ... | ... | ... | ... | ... | ... | ... |
| ... | ... | ... | ... | ... | ... | ... |
| ... | ... | ... | ... | .?. | .?. | .?. |
| .?. | .?. | .?. | .?. |     |     |     |
Only of course wider and with some actual prompt cells set on. In particular note the arrangement of the question marks for 2c7-f2b needs to reach from some W row to the bottom of the file and the order of the rows in W coordinate is not perhaps intuitive. You can generally make it some fixed number of terminal Y rows in each generation, you can try to use to-uwi to understand how things are parsed into U/W space, or you can use from-uwi to generate a sample grid which is a UW prism. If you haven't gotten it working by the time I get back home I will take a better look at your input file.

EDIT: as for can/should it's not a particularly crazy thing to attempt. Fixed board and recentering are both reasonable search types depending on what sort of result you want to favor (and I assume from input file you're trying fixed board).

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

Re: amling search program principles discussion / brain dump

Post by amling » August 11th, 2024, 1:56 pm

amling wrote:
August 5th, 2024, 10:31 pm
lordlouckster wrote:
August 5th, 2024, 12:17 pm
How can I extend this 2c/7 partial in LLSSS, and should I?

Code: Select all

x = 11, y = 51, rule = B36/S245
2b3o$7o$o2b4o$bo4bo$4bo$b2o$2b3o2$2b4o$3bob2o$2bobo$2b2o2bo$2b2obo2bo$
2b3ob3o$2b2o3b2o$4b2ob2o$3b3o$3bob2o$2b2ob2obo$6b2o$2b4o2bo$3b3o2b2o$b
o2bob2obo$2b4o$2b5o2bo$3bob2ob2o$5bo2bo$5bobo$6b3o$2b2o2bobo$2b3o$2b2o
$3bobo$3bo2b2o$2b3obo$6b2o$3b3o2b2o$bo3bo2b3o$2bo2b2o2bo$6ob3o$4b5o$3b
o3bo$2b2ob2o$3b2o2bo$3bo$3b2o$2b2ob2o$2bo2bo$2b6o$4b3o$6b2o!
I have gruelingly tried to create an input file, but I get "no entry found for key".
If you haven't gotten it working by the time I get back home I will take a better look at your input file.
There are several problems with that input file.

*) The simplest is that there is a unicode A0 "no-break space" in there (at least when the file is read as utf8), which LLSSS's grid parser will treat as a non-space in that, well, it is not actually a normal "space" character.

*) Arguably the second simplest is what I said above about question marks having to be a suffix of the W rows. Your four rows of question marks are not the last 4 W rows. If I fix the no-break space and feed your input through "grid-tool to-uwi 2c7-f2b" it ends like this:

Code: Select all

| .........*..... |
| ......*........ |
| .......*.*..... |
| ......****..... |
| .......****.... |
| .....*.***..... |
| ........**..... |
| .......***..... |
| .........*..... |
| ........***.... |
| ............... |
| .......****.... |
| .......**...... |
| ..???????????.. |
| ......*.**..... |
| ..???????????.. |
| ........*...... |
| ..???????????.. |
| ........*...... |
| ..???????????.. |
It may be more intelligible/enlightening to see what happens when this short slice of a pattern:

Code: Select all

|    |    |    |    | A4 | A5 | A6 |
| B0 | B1 | B2 | B3 | B4 | B5 | B6 |
| C0 | C1 | C2 | C3 |    |    |    |
Is converted by `grid-tool to-uwi 2c7-f2b` to this:

Code: Select all

| B0 |
| A4 |
| B1 |
| A5 |
| B2 |
| A6 |
| B3 |
| C0 |
| B4 |
| C1 |
| B5 |
| C2 |
| B6 |
| C3 |
thereby showing the order the parts of the pattern are read in in W coordinates.

*) Relatedly, and possibly the toughest to understand, I don't think your question marks are far enough up. Based on the contents of your single generation partial I would only feel comfortable inferring as low as the non question mark cells go in this, my own "1.in":

Code: Select all

|                                 |                                 |                                 |                                 | ............................... | ............................... | ............................... |
| ............................... | ............................... | ............................... | ............................... | ............................... | ............................... | ............................... |
| ............................... | ............................... | ............................... | ............................... | ............................... | ............................... | ............................... |
| ............................... | ............................... | ............................... | ............................... | ............................... | ............................... | ............................... |
| ............................... | .............*................. | ............*.*................ | ............*.*................ | ...........**.**............... | ............................... | ...........*****............... |
| ............***................ | ............***................ | ............***................ | ...........**.**............... | ...........**.**............... | ..........*******.............. | ..........*******.............. |
| ..........*******.............. | ..........***.................. | ............**.*............... | ...........*****............... | ...........**.**............... | ...........**.**............... | ..........**................... |
| ..........*..****.............. | .............**.**............. | ...........*..****............. | ............*.*................ | ............*..**.............. | ............**.**.............. | ..............**............... |
| ...........*....*.............. | .............*..*.............. | ..............****............. | ............*****.............. | ............***................ | ...........****.*.............. | ..............*.*.............. |
| ..............*................ | ...........**.................. | ...........*.*................. | ..............***.............. | ...........*.***............... | ...........*.**................ | ..........****................. |
| ...........**.................. | ...........*..*................ | ..........*.................... | ...........***................. | ............*...*.............. | ..........*.*...*.............. | ............**................. |
| ............***................ | ...........*................... | ............*.*................ | ...........**..*............... | ..........***..*............... | ............****............... | ............****............... |
| ............................... | .............*.*............... | ............****............... | ...........*..**............... | ..............***.............. | ...........*.*.**.............. | .............*.*............... |
| ............****............... | ............*.*.*.............. | ............*.**............... | ............*.**............... | ..............*................ | .............***............... | ............*.**............... |
| .............*.**.............. | .............****.............. | ...............*.*............. | ..............***.............. | .............*.**.............. | ..............*.*.............. | .............**................ |
| ............*.*................ | ................*.............. | ............................... | ............................... | ................*.............. | ...............*.*............. | .............***.*............. |
| ............**..*.............. | ...........***.*............... | ............**................. | ...........**...*.............. | .................*............. | ............**...*............. | .............**.***............ |
| ............**.*..*............ | ...........**.....*............ | ..........**...***.*........... | ..............****.*........... | ...........****...*............ | ..............*...*............ | ............*.*..**............ |
| ............***.***............ | ...........**.**.***........... | ............*.*...**........... | ..........*..*....*............ | .............*.....*........... | .............*....*............ | ............*.*..*............. |
| ............**...**............ | .............*....**........... | ...........*.*.*.**............ | .............*.*..*............ | .............*.*.*............. | ............**..*.............. | ..............*................ |
| ..............**.**............ | ............*.*................ | .............**...*............ | ..............*.*.............. | .............*.*............... | ............*..*............... | ...............*............... |
| .............***............... | ...............*.*............. | .............*...*............. | .............*................. | ............*.*..*............. | .............******............ | .............****.*............ |
| .............*.**.............. | .............*.***............. | ............**.*............... | ............**...**............ | ............***..**............ | ...........*.**..*............. | ............****.**............ |
| ............**.**.*............ | ............**.**.............. | ............**.*.**............ | ...............*..*............ | ............*......*........... | ..............*.*.............. | .............**.**............. |
| ................**............. | ................***............ | ................*.*............ | ............*.***..*........... | .............*..**............. | ................*..*........... | ...............******.......... |
| ............****..*............ | ............****...*........... | ............*.*....*........... | .............*....**........... | ............**...***........... | .................*.**.......... | ............*...**............. |
| .............***..**........... | .............*.*..*............ | .............*.....*........... | ............*.*...***.......... | ............*....****.......... | ...........***...*.*........... | ...........****..*............. |
| ...........*..*.**.*........... | .............*.*.*.*........... | .............*.....*........... | .............**...*............ | ............****.*..*.......... | ...........*.*.*.*..*.......... | ............*.*..*.**.......... |
| ............****............... | ...........**....**............ | ...........*.*...*............. | ............*...*..*........... | ............*..*............... | ............*....*.*........... | ............*...*.*............ |
| ............*****..*........... | ............*...****........... | ................****........... | ............*...*.**........... | ................*.*.*.......... | ............................... | ................*.............. |
| .............*.**.**........... | ............*.***.............. | .............*.....*........... | .................*.*........... | ............................... | ...............*.*.*........... | ...............*.**............ |
| ...............*..*............ | ...................*........... | ..............*................ | ..............*...*............ | ..............**..*............ | ..............*.**............. | ................***............ |
| ...............*.*............. | ...............*.*............. | ...............*.**............ | ..............**............... | ..............*.**............. | .............*.*............... | .............*...*............. |
| ................***............ | ...............***............. | ...............*.**............ | ................**............. | ..............*.*.............. | .............*..*.............. | ............**................. |
| ............**..*.*............ | .............****.*............ | ............**.**.............. | ...........*.*..**............. | ............*...**............. | .............*................. | ............**................. |
| ............***................ | ...........**.................. | ...........**..*............... | ............*..**.............. | ...........*..*..*............. | .............*.*............... | .............*.**.............. |
| ............**................. | ............**................. | ...........*.*................. | ............*.*................ | ...........**...*.............. | ...........**..**.............. | ............*.***.............. |
| .............*.*............... | ................*.............. | ............**................. | ............*...*.............. | ...............*............... | ...........*****.*............. | ............*****.............. |
| .............*..**............. | .............*...*............. | .............*.***............. | ..............*..*............. | ............*.****............. | .............*.**.*............ | ................*.*............ |
| ............***.*.............. | ............*.*.*.............. | ............*....*............. | ............***..*............. | ..............*..**............ | .................*............. | ............**.....*........... |
| ................**............. | ............*.....*............ | .............*...**............ | ..................*............ | ...........*..*...*............ | ...........**.**..**........... | ..............**...*........... |
| .............***..**........... | ..................***.......... | ............**....***.......... | ...........***..*.*............ | ...........**.*..*.*........... | ...........**.*....*........... | ...........**..*...*........... |
| ...........*...*..***.......... | ............**.*.***........... | ...........*****.*............. | ............**.*....*.......... | ..........**.*.....*........... | ..........**.*...*............. | ...........***...**............ |
| ............*..**..*........... | ..........*.*..**.**........... | ...........*....**.*........... | ..........***..**.*............ | ............*.****............. | ...........**.****............. | ..........*....****............ |
| ..........******.***........... | .............**..**............ | ...........**.***.............. | .............****.............. | ..............***.............. | ..............*.**............. | ............*.*..*............. |
| ..............*****............ | ...........*..******........... | ............*..**.............. | ............*..*.*............. | ............*..*............... | .............*.**.............. | .............*.***............. |
| .............*...*............. | ............*...***............ | ............**....**........... | ...........*..*....*........... | ..............*...*............ | ..............**............... | .............**.*.............. |
| ............**.**.............. | .............*.*.*............. | ............*..****............ | ...............**..*........... | ...............*............... | .............*................. | ............**................. |
| .............**..*............. | .............****.............. | .............**................ | ............*.................. | ............*.**............... | ............***.*.............. | .............**.*.............. |
| .............*................. | ............**................. | .............*..*.............. | ............***................ | ...........*.*.*............... | .............*.**.............. | .............***............... |
| .............**................ | .............***............... | .............***............... | ............*.**.*............. | .............***............... | .............*.*............... | ..........???????????.......... |
| ............**.**.............. | .............*..*.............. | .............*.***............. | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... |
| ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... |
| ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... |
| ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... |
| ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... |
| ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... |
| ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... |
| ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... |
| ..........???????????.......... | ..........???????????.......... | ..........???????????.......... | ..........???????????.......... |                                 |                                 |                                 |
I've also padded left and right with several blank spaces to give room to expand the search without having to make more input files.



With that I am able to run e.g.:

Code: Select all

rlife llsss 2c7-f2b 1.in --rule 'B36/S245' 00 00 00
And it finds partial like...

Code: Select all

20240811 10:54:46 [INFO] Firstest:
20240811 10:54:46 [INFO] |                 |                 |                 |                 | ....***........ | ...*.*.*....... | .....*.**...... |
20240811 10:54:46 [INFO] | .....**.*...... | .....**........ | .....***....... | .....***....... | ....*.**.*..... | .....***....... | .....*.*....... |
20240811 10:54:46 [INFO] | .....***....... | ....**.**...... | .....*..*...... | .....*.***..... | .....*.**...... | .....****.*.... | ....****..**... |
20240811 10:54:46 [INFO] | .....*.*....... | ....*.*..*..... | .........**.... | ........*.*.... | ....***.*.**... | ....*...*.**... | .....**..***... |
20240811 10:54:46 [INFO] | .....*..***.... | .....*..***.... | ....*....*..... | ....**..****... | ..........*.... | ........*.**... | ....*.*.*.***.. |
20240811 10:54:46 [INFO] | ......*.**..... | ....*....*..... | ....**...***... | .........**.... | ....**.**...... | ....****..**... | .....**...*.... |
20240811 10:54:46 [INFO] | ....***...***.. | .....*...***... | .....*..**..... | ....*..****.*.. | .....*..***.*.. | ........**..... | ........***.*.. |
20240811 10:54:46 [INFO] | ......*.*****.. | ......*..***... | ......**.*.**.. | ....*.*.*..**.. | ....*..*..**... | ....**..*****.. | ....*.*...*.*.. |
20240811 10:54:46 [INFO] | ......**.*..... | .....***.***... | ....**.*.*.*... | .....*.*****... | .....*.***.*... | ....*.****..*.. | ....****..**... |
20240811 10:54:46 [INFO] | ....*...*.***.. | ....****..*.... | ....****.*.**.. | ....**.*.***... | .....***...*... | ...***.**.**... | ....*...*...... |
20240811 10:54:46 [INFO] | ...*.*...**.... | ........*****.. | .....*.****.*.. | .....**.**.**.. |                 |                 |                 |
20240811 10:54:46 [INFO] | ...**.*..**.*.. |                 |                 |                 |                 |                 |                 |
although it has used quite a bit of memory to get there (~40 GB).

Out of curiosity, what is your goal here? Any 2c/7 ship (in this rule)? The thinnest 2c/7 ship? Specifically this front for a ship? Depending on which it is there are other searches I might suggest instead or in addition.

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

Re: amling search program principles discussion / brain dump

Post by amling » August 12th, 2024, 1:02 pm

amling wrote:
August 12th, 2024, 12:54 pm
Another victory for the new computer: a 4c/8 perpendicular stripes greyship which is fully rectangular:

Code: Select all

#C [[ TRACK 0 -1/2 ]]
x = 337, y = 177, rule = B3/S23
97b3o5b3o11b3o5b3o11b3o5b3o11b3o5b3o11b3o5b3o11b3o5b3o11b3o5b3o$96bo2b
o5bo2bo9bo2bo5bo2bo9bo2bo5bo2bo9bo2bo5bo2bo9bo2bo5bo2bo9bo2bo5bo2bo9bo
2bo5bo2bo$99bo5bo15bo5bo15bo5bo15bo5bo15bo5bo15bo5bo15bo5bo$99bo5bo15b
o5bo15bo5bo15bo5bo15bo5bo15bo5bo15bo5bo$96bobo7bobo9bobo7bobo9bobo7bob
o9bobo7bobo9bobo7bobo9bobo7bobo9bobo7bobo$102bo21bo21bo21bo21bo21bo21b
o$101bobo19bobo19bobo19bobo19bobo19bobo19bobo$100bo3bo17bo3bo17bo3bo
17bo3bo17bo3bo17bo3bo17bo3bo$100bo3bo17bo3bo17bo3bo17bo3bo17bo3bo17bo
3bo17bo3bo$102bo21bo21bo21bo21bo21bo21bo$99b3ob3o15b3ob3o15b3ob3o15b3o
b3o15b3ob3o15b3ob3o15b3ob3o$98b2o5b2o13b2o5b2o13b2o5b2o13b2o5b2o13b2o
5b2o13b2o5b2o13b2o5b2o$96b3o7b3o9b3o7b3o9b3o7b3o9b3o7b3o9b3o7b3o9b3o7b
3o9b3o7b3o$96bo11bo9bo11bo9bo11bo9bo11bo9bo11bo9bo11bo9bo11bo$96bo2bo
5bo2bo9bo2bo5bo2bo9bo2bo5bo2bo9bo2bo5bo2bo9bo2bo5bo2bo9bo2bo5bo2bo9bo
2bo5bo2bo$96bo3b2ob2o3bo9bo3b2ob2o3bo9bo3b2ob2o3bo9bo3b2ob2o3bo9bo3b2o
b2o3bo9bo3b2ob2o3bo9bo3b2ob2o3bo$97bo2b2ob2o2bo11bo2b2ob2o2bo11bo2b2ob
2o2bo11bo2b2ob2o2bo11bo2b2ob2o2bo11bo2b2ob2o2bo11bo2b2ob2o2bo$2bo96b3o
b3o15b3ob3o15b3ob3o15b3ob3o15b3ob3o15b3ob3o15b3ob3o96bo$b3o5b3o12bo5bo
63b4o2bo3bo2b4o5b4o2bo3bo2b4o5b4o2bo3bo2b4o5b4o2bo3bo2b4o5b4o2bo3bo2b
4o5b4o2bo3bo2b4o5b4o2bo3bo2b4o63bo5bo12b3o5b3o$2obo4bo2bo5b3o3b3o3b3o
61bobob3o5b3obobo3bobob3o5b3obobo3bobob3o5b3obobo3bobob3o5b3obobo3bobo
b3o5b3obobo3bobob3o5b3obobo3bobob3o5b3obobo61b3o3b3o3b3o5bo2bo4bob2o$
3o4b3obo4bo2bo3bob2ob2obo62bo2bobo5bobo2bo5bo2bobo5bobo2bo5bo2bobo5bob
o2bo5bo2bobo5bobo2bo5bo2bobo5bobo2bo5bo2bobo5bobo2bo5bo2bobo5bobo2bo
62bob2ob2obo3bo2bo4bob3o4b3o$3o2bo6bo3bo2bo4b3ob3o62b2ob3o7b3ob2o3b2ob
3o7b3ob2o3b2ob3o7b3ob2o3b2ob3o7b3ob2o3b2ob3o7b3ob2o3b2ob3o7b3ob2o3b2ob
3o7b3ob2o62b3ob3o4bo2bo3bo6bo2b3o$b2o5bo4bo4b4o2b3o2b2o65b3o7b3o9b3o7b
3o9b3o7b3o9b3o7b3o9b3o7b3o9b3o7b3o9b3o7b3o65b2o2b3o2b4o4bo4bo5b2o$7bo
6bobobob2o2b3o69b3o3bo3b3o9b3o3bo3b3o9b3o3bo3b3o9b3o3bo3b3o9b3o3bo3b3o
9b3o3bo3b3o9b3o3bo3b3o69b3o2b2obobobo6bo$14bobob2o2bo2b2o39b3o32b3o19b
3o19b3o19b3o19b3o19b3o19b3o32b3o39b2o2bo2b2obobo$12b2o3bo2b2o2b3o5b3o
24b3o4bo2bo27bo9bo11bo9bo11bo9bo11bo9bo11bo9bo11bo9bo11bo9bo27bo2bo4b
3o24b3o5b3o2b2o2bo3b2o$15b2o4b3o3b2o2bo2bo7b3o3b3o7bo2bo4bo28b3o4bo4b
3o7b3o4bo4b3o7b3o4bo4b3o7b3o4bo4b3o7b3o4bo4b3o7b3o4bo4b3o7b3o4bo4b3o
28bo4bo2bo7b3o3b3o7bo2bo2b2o3b3o4b2o$12b5o2b2o8bo5bo5bo2bo2bo2bo10bo4b
o28b3obobobobob3o7b3obobobobob3o7b3obobobobob3o7b3obobobobob3o7b3obobo
bobob3o7b3obobobobob3o7b3obobobobob3o28bo4bo10bo2bo2bo2bo5bo5bo8b2o2b
5o$12bo6b2obo5b3o2b2o6bo3bo4bo6bo3bo5bobo27b3obobob3o11b3obobob3o11b3o
bobob3o11b3obobob3o11b3obobob3o11b3obobob3o11b3obobob3o27bobo5bo3bo6bo
4bo3bo6b2o2b3o5bob2o6bo$11b2o5b2o5b2o3b2ob6ob2obo7bo4bo4bo34b2obobobob
ob2o9b2obobobobob2o9b2obobobobob2o9b2obobobobob2o9b2obobobobob2o9b2obo
bobobob2o9b2obobobobob2o34bo4bo4bo7bob2ob6ob2o3b2o5b2o5b2o$12bo2b4obo
2bob2o2b4o2bo2b2o2bo4bo2b2o2b2obo3bob2o6b3o19b2obo2bobobobo2bob2o3b2ob
o2bobobobo2bob2o3b2obo2bobobobo2bob2o3b2obo2bobobobo2bob2o3b2obo2bobob
obo2bob2o3b2obo2bobobobo2bob2o3b2obo2bobobobo2bob2o19b3o6b2obo3bob2o2b
2o2bo4bo2b2o2bo2b4o2b2obo2bob4o2bo$13bo3bo6b2o5bo5b2o2bob2o2bo2b2o2b2o
bo3b2o2bo4bo2bo20bo6bobo6bo5bo6bobo6bo5bo6bobo6bo5bo6bobo6bo5bo6bobo6b
o5bo6bobo6bo5bo6bobo6bo20bo2bo4bo2b2o3bob2o2b2o2bo2b2obo2b2o5bo5b2o6bo
3bo$13b2o2bo9bob2o6b5ob3o2bo4b2o2bo4bo10bo22b2o2bo3bo2b2o9b2o2bo3bo2b
2o9b2o2bo3bo2b2o9b2o2bo3bo2b2o9b2o2bo3bo2b2o9b2o2bo3bo2b2o9b2o2bo3bo2b
2o22bo10bo4bo2b2o4bo2b3ob5o6b2obo9bo2b2o$8bo3b2ob2o19bob2o2bobo2bo8bo
2b4o2bo7bo19bo17bo3bo17bo3bo17bo3bo17bo3bo17bo3bo17bo3bo17bo19bo7bo2b
4o2bo8bo2bobo2b2obo19b2ob2o3bo$7b3o4bo20bo5bo2b2ob2o2b2o5b2o3b2ob3obob
o25bo7bo13bo7bo13bo7bo13bo7bo13bo7bo13bo7bo13bo7bo25bobob3ob2o3b2o5b2o
2b2ob2o2bo5bo20bo4b3o$7bob2o25bo2b2o4b2o4bo6bo2b2o4b2o26bo2bo7bo2bo7bo
2bo7bo2bo7bo2bo7bo2bo7bo2bo7bo2bo7bo2bo7bo2bo7bo2bo7bo2bo7bo2bo7bo2bo
26b2o4b2o2bo6bo4b2o4b2o2bo25b2obo$8b3o23b2o3bo2bob2obo2bo4bo4bo37bo7bo
13bo7bo13bo7bo13bo7bo13bo7bo13bo7bo13bo7bo37bo4bo4bo2bob2obo2bo3b2o23b
3o$8b6o20b4obobo5bob2o4b3o7b2o2bo29bo5bo15bo5bo15bo5bo15bo5bo15bo5bo
15bo5bo15bo5bo29bo2b2o7b3o4b2obo5bobob4o20b6o$8b3obob2o14bo6bobo3bobob
o9bo6bo25bo8bo5bo15bo5bo15bo5bo15bo5bo15bo5bo15bo5bo15bo5bo8bo25bo6bo
9bobobo3bobo6bo14b2obob3o$11bo4bo12b3o3b3obo2bo4b2ob2o5b6o6bo19b3o153b
3o19bo6b6o5b2ob2o4bo2bob3o3b3o12bo4bo$10bo18bob2o4b3o4bo3b5ob3o2bobo2b
ob3o3b3o3b3o7b2obo6b2o5b2o13b2o5b2o13b2o5b2o13b2o5b2o13b2o5b2o13b2o5b
2o13b2o5b2o6bob2o7b3o3b3o3b3obo2bobo2b3ob5o3bo4b3o4b2obo18bo$10bo4b2o
15bo4b3o3b2o4b2o2b2obo4b2o9bo2bobo2bo7b3o7b2o5b2o13b2o5b2o13b2o5b2o13b
2o5b2o13b2o5b2o13b2o5b2o13b2o5b2o7b3o7bo2bobo2bo9b2o4bob2o2b2o4b2o3b3o
4bo15b2o4bo$10bo17b3o3bobobo3b3o14bob2o8bo3bobo4bo6b2o9bo3bo17bo3bo17b
o3bo17bo3bo17bo3bo17bo3bo17bo3bo9b2o6bo4bobo3bo8b2obo14b3o3bobobo3b3o
17bo$10bo17b4o3bo6b2o10bobo2bob2o5b6obobob4o17bo3bo5bo5bo5bo3bo5bo5bo
5bo3bo5bo5bo5bo3bo5bo5bo5bo3bo5bo5bo5bo3bo5bo5bo5bo3bo17b4obobob6o5b2o
bo2bobo10b2o6bo3b4o17bo$10bo18bo8bo14bo6b3o5bo6bobobo3b2ob2o12bo3bo4b
3o3b3o4bo3bo4b3o3b3o4bo3bo4b3o3b3o4bo3bo4b3o3b3o4bo3bo4b3o3b3o4bo3bo4b
3o3b3o4bo3bo12b2ob2o3bobobo6bo5b3o6bo14bo8bo18bo$11bobo22b2o22b3o3bob
9ob6obobo20b2obo3bob2o11b2obo3bob2o11b2obo3bob2o11b2obo3bob2o11b2obo3b
ob2o11b2obo3bob2o20bobob6ob9obo3b3o22b2o22bobo$35bo2bo22b2o4bo17bo3bo
11b3o4b3o5b3o4b3o4b3o5b3o4b3o4b3o5b3o4b3o4b3o5b3o4b3o4b3o5b3o4b3o4b3o
5b3o4b3o11bo3bo17bo4b2o22bo2bo$31b3ob4o29b17ob4o10b5o4b2o5b2o4b5o4b2o
5b2o4b5o4b2o5b2o4b5o4b2o5b2o4b5o4b2o5b2o4b5o4b2o5b2o4b5o10b4ob17o29b4o
b3o$30b2ob6o52bo7bo5bo3b2o5b2o3bo5bo3b2o5b2o3bo5bo3b2o5b2o3bo5bo3b2o5b
2o3bo5bo3b2o5b2o3bo5bo3b2o5b2o3bo5bo7bo52b6ob2o$29b2o37b24o6bo2b3o2bo
3bobobobo3bo2b3o2bo3bobobobo3bo2b3o2bo3bobobobo3bo2b3o2bo3bobobobo3bo
2b3o2bo3bobobobo3bo2b3o2bo3bobobobo3bo2b3o2bo6b24o37b2o$29b2o36bo25bo
4bob5obo13bob5obo13bob5obo13bob5obo13bob5obo13bob5obo13bob5obo4bo25bo
36b2o$29b2o3bo3bo29b26o16b7o15b7o15b7o15b7o15b7o15b7o16b26o29bo3bo3b2o
$32b2o61bo13bo7bo13bo7bo13bo7bo13bo7bo13bo7bo13bo7bo13bo61b2o$29bo38b
28o13b9o13b9o13b9o13b9o13b9o13b9o13b28o38bo$29b2ob3o32bo28bo3bo3bo3bo
9bo3bo3bo3bo9bo3bo3bo3bo9bo3bo3bo3bo9bo3bo3bo3bo9bo3bo3bo3bo9bo3bo3bo
3bo28bo32b3ob2o$28bo4bobo32b30ob2obob2ob13ob2obob2ob13ob2obob2ob13ob2o
bob2ob13ob2obob2ob13ob2obob2ob13ob2obob2ob30o32bobo4bo$27bobo5b2o61bob
obobobo13bobobobobo13bobobobobo13bobobobobo13bobobobobo13bobobobobo13b
obobobobo61b2o5bobo$34b2o32b32obobob17obobob17obobob17obobob17obobob
17obobob17obobob32o32b2o$28b2o4b2ob2o28bo201bo28b2ob2o4b2o$27b2ob2o36b
201o36b2ob2o$27b5o4bo263bo4b5o$28b3o37b201o37b3o$29bo37bo201bo37bo$29b
2o37b201o37b2o$30bo3bo267bo3bo$33b3o32b201o32b3o$33bob2o30bo201bo30b2o
bo$34b3o31b201o31b3o$34b3o263b3o$34b2o32b201o32b2o$67bo201bo$68b201o2$
68b201o$67bo201bo$68b201o2$68b201o$67bo201bo$68b201o2$68b201o$67bo201b
o$68b201o2$68b201o$67bo201bo$68b201o2$68b201o$67bo201bo$68b201o2$68b
201o$67bo201bo$68b201o2$68b201o$67bo201bo$68b201o2$68b201o$67bo201bo$
68b201o2$68b30o2b35o2b29o2b35o2b29o2b33o$67bo33b2o29b2o35b2o29b2o35b2o
30bo$68b3o4bob18o3b2o4b27o4b2o3b23o3b2o4b27o4b2o3b23o3b2o4b20obo4b3o$
69bo5bobobo15b2o7bo25bo7b2o23b2o7bo25bo7b2o23b2o7bo16bobobo5bo$72bo10b
ob10ob3o8b9obob9o8b3ob10obob10ob3o8b9obob9o8b3ob10obob10ob3o8b9obo10bo
$67b3o13bobobo8bo8bo7bobobobobo7bo8bo8bobobobobo8bo8bo7bobobobobo7bo8b
o8bobobobobo8bo8bo7bobobo13b3o$67bo2b2o19bo3b2o8bo3bo15bo3bo8b2o3bo15b
o3b2o8bo3bo15bo3bo8b2o3bo15bo3b2o8bo3bo19b2o2bo$67b2ob2o19bo3b2o8bo3bo
15bo3bo8b2o3bo15bo3b2o8bo3bo15bo3bo8b2o3bo15bo3b2o8bo3bo19b2ob2o$71bob
o18b2ob2o6b6o17b6o6b2ob2o17b2ob2o6b6o17b6o6b2ob2o17b2ob2o6b6o18bobo$
72b2o21bo2b6o27b6o2bo23bo2b6o27b6o2bo23bo2b6o23b2o$65bo2b3obo21bo6bo2b
o25bo2bo6bo21bo6bo2bo25bo2bo6bo21bo6bo2bo23bob3o2bo$65b2o22bo5bobobobo
9bo11bo9bobobobo5bo11bo5bobobobo9bo11bo9bobobobo5bo11bo5bobobobo9bo22b
2o$66b2o20b3o6b2o4bo6b3o9b3o6bo4b2o6b3o9b3o6b2o4bo6b3o9b3o6bo4b2o6b3o
9b3o6b2o4bo6b3o20b2o$88bob2o4bo7bo4b2obo9bob2o4bo7bo4b2obo9bob2o4bo7bo
4b2obo9bob2o4bo7bo4b2obo9bob2o4bo7bo4b2obo$89b3o2b2ob2o5b2o3b3o11b3o3b
2o5b2ob2o2b3o11b3o2b2ob2o5b2o3b3o11b3o3b2o5b2ob2o2b3o11b3o2b2ob2o5b2o
3b3o$66bob3o18b3o2b2ob2o6b2o2b3o11b3o2b2o6b2ob2o2b3o11b3o2b2ob2o6b2o2b
3o11b3o2b2o6b2ob2o2b3o11b3o2b2ob2o6b2o2b3o18b3obo$65bob2o20b2o5bo4bo8b
2o11b2o8bo4bo5b2o11b2o5bo4bo8b2o11b2o8bo4bo5b2o11b2o5bo4bo8b2o20b2obo$
65bo27b2o11bo21bo11b2o19b2o11bo21bo11b2o19b2o11bo28bo$69bo32bo3bo21bo
3bo37bo3bo21bo3bo37bo3bo24bo$67bo2bo22b2obo7bo25bo7bob2o19b2obo7bo25bo
7bob2o19b2obo7bo25bo2bo$67bobo24bobo41bobo21bobo41bobo21bobo34bobo$69b
2o25b2o6b2obo19bob2o6b2o25b2o6b2obo19bob2o6b2o25b2o6b2obo22b2o$69bobo
22bo2bo5b5o19b5o5bo2bo21bo2bo5b5o19b5o5bo2bo21bo2bo5b5o21bobo$69bobo
22bobo2bob2o2b2o21b2o2b2obo2bobo21bobo2bob2o2b2o21b2o2b2obo2bobo21bobo
2bob2o2b2o22bobo$70bo22b2o2bo3b3obo23bob3o3bo2b2o19b2o2bo3b3obo23bob3o
3bo2b2o19b2o2bo3b3obo24bo$93b2ob2o5bo2bo21bo2bo5b2ob2o19b2ob2o5bo2bo
21bo2bo5b2ob2o19b2ob2o5bo2bo$94b2o5bobo2bo21bo2bobo5b2o21b2o5bobo2bo
21bo2bobo5b2o21b2o5bobo2bo$96bo4bobo2bo21bo2bobo4bo25bo4bobo2bo21bo2bo
bo4bo25bo4bobo2bo$97bo2bo2bo2bo21bo2bo2bo2bo27bo2bo2bo2bo21bo2bo2bo2bo
27bo2bo2bo2bo$99b6obo21bob6o31b6obo21bob6o31b6obo$95bo3b2ob5o21b5ob2o
3bo23bo3b2ob5o21b5ob2o3bo23bo3b2ob5o$94bo7b2o27b2o7bo21bo7b2o27b2o7bo
21bo7b2o$94b3o2b2ob2o27b2ob2o2b3o21b3o2b2ob2o27b2ob2o2b3o21b3o2b2ob2o$
95b2o2b2ob2o27b2ob2o2b2o23b2o2b2ob2o27b2ob2o2b2o23b2o2b2ob2o$98bo3b2o
27b2o3bo29bo3b2o27b2o3bo29bo3b2o$99b2ob2o27b2ob2o31b2ob2o27b2ob2o31b2o
b2o$90b3o7bo7b3o13b3o7bo7b3o13b3o7bo7b3o13b3o7bo7b3o13b3o7bo7b3o$89bo
2bo3b4obobo4bo2bo11bo2bo4bobob4o3bo2bo11bo2bo3b4obobo4bo2bo11bo2bo4bob
ob4o3bo2bo11bo2bo3b4obobo4bo2bo$92bo3b2o2bo7bo17bo7bo2b2o3bo17bo3b2o2b
o7bo17bo7bo2b2o3bo17bo3b2o2bo7bo$88bo3bo4b3obo2bo3bo3bo9bo3bo3bo2bob3o
4bo3bo9bo3bo4b3obo2bo3bo3bo9bo3bo3bo2bob3o4bo3bo9bo3bo4b3obo2bo3bo3bo$
88bo3bo5b2obo6bo3bo9bo3bo6bob2o5bo3bo9bo3bo5b2obo6bo3bo9bo3bo6bob2o5bo
3bo9bo3bo5b2obo6bo3bo$92bo3b2obo3b2o3bo17bo3b2o3bob2o3bo17bo3b2obo3b2o
3bo17bo3b2o3bob2o3bo17bo3b2obo3b2o3bo$89bobo4bob2o2b2o5bobo11bobo5b2o
2b2obo4bobo11bobo4bob2o2b2o5bobo11bobo5b2o2b2obo4bobo11bobo4bob2o2b2o
5bobo$98b2o2b3o25b3o2b2o29b2o2b3o25b3o2b2o29b2o2b3o$99bobob2o25b2obobo
31bobob2o25b2obobo31bobob2o$99b3ob2o25b2ob3o31b3ob2o25b2ob3o31b3ob2o$
99bob3o27b3obo31bob3o27b3obo31bob3o$101b3o27b3o35b3o27b3o35b3o$102bo
29bo37bo29bo37bo$98bo2bo31bo2bo29bo2bo31bo2bo29bo2bo$101bo31bo35bo31bo
35bo$98bobo33bobo29bobo33bobo29bobo$99b2o33b2o31b2o33b2o31b2o$92b3o11b
3o17b3o11b3o17b3o11b3o17b3o11b3o17b3o11b3o$92bo2bo9bo2bo17bo2bo9bo2bo
17bo2bo9bo2bo17bo2bo9bo2bo17bo2bo9bo2bo$91bo3bo9bo3bo15bo3bo9bo3bo15bo
3bo9bo3bo15bo3bo9bo3bo15bo3bo9bo3bo$91bobo3b7o3bobo15bobo3b7o3bobo15bo
bo3b7o3bobo15bobo3b7o3bobo15bobo3b7o3bobo$90b2obo6bo6bob2o13b2obo6bo6b
ob2o13b2obo6bo6bob2o13b2obo6bo6bob2o13b2obo6bo6bob2o$90b4o5b3o5b4o13b
4o5b3o5b4o13b4o5b3o5b4o13b4o5b3o5b4o13b4o5b3o5b4o$96b2obobob2o25b2obob
ob2o25b2obobob2o25b2obobob2o25b2obobob2o$90b3o6bobo6b3o13b3o6bobo6b3o
13b3o6bobo6b3o13b3o6bobo6b3o13b3o6bobo6b3o$92b3o4bobo4b3o17b3o4bobo4b
3o17b3o4bobo4b3o17b3o4bobo4b3o17b3o4bobo4b3o$92bo2bo3bobo3bo2bo17bo2bo
3bobo3bo2bo17bo2bo3bobo3bo2bo17bo2bo3bobo3bo2bo17bo2bo3bobo3bo2bo$92bo
2bo2b2ob2o2bo2bo17bo2bo2b2ob2o2bo2bo17bo2bo2b2ob2o2bo2bo17bo2bo2b2ob2o
2bo2bo17bo2bo2b2ob2o2bo2bo$92bo15bo17bo15bo17bo15bo17bo15bo17bo15bo$
92bo4b3ob3o4bo17bo4b3ob3o4bo17bo4b3ob3o4bo17bo4b3ob3o4bo17bo4b3ob3o4bo
$93bo3bobobobo3bo19bo3bobobobo3bo19bo3bobobobo3bo19bo3bobobobo3bo19bo
3bobobobo3bo$97b2o3b2o27b2o3b2o27b2o3b2o27b2o3b2o27b2o3b2o$99b3o31b3o
31b3o31b3o31b3o$96bo7bo25bo7bo25bo7bo25bo7bo25bo7bo$96bo7bo25bo7bo25bo
7bo25bo7bo25bo7bo$96bo3bo3bo25bo3bo3bo25bo3bo3bo25bo3bo3bo25bo3bo3bo!
Note the back is just alternating convex/concave joints of the 2c/1 sideways edge. The one has been known forever but the other is the new part here. Perhaps more details about how it was found on a spammier thread...
This was done with PD rotor tree which is unsurprising, but the search that did the first stage was very big. I had left the new "jcols V2" running the first stage of the PD rotor tree pipeline while I was out of town mostly just to test it. It reached the 2TB memory limit I had set but before it died it left some intermediate results which later stages of the PD rotor tree pipeline were able to extend sufficiently to ultimately finish in 2c/4 just now when I got back. At the moment of its death that key search was using "jcols V2" for real, storing ~800 GB of "low" bits and a separate ~50 GB of high bits in the column which had 108,134,790,707 entries. To store that in original "BIDX=usize" would have taken ~1600GB and I doubt the search would have made it that far given other overhead and the unavoidable coexistence of two jcols at once (the unextended and extended during extension). Maybe it would have found what I needed to finish the project before dying anyway, maybe I could have pushed it through in swap, but I still think it's a win for "jcols V2". Either way it's certainly a win for the new computer as it would never have made it on the 120 GB computer and I would never have paid Amazon to run this search given how speculative and long it was.

Post Reply