A new spaceship search approach

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

Re: A new spaceship search approach

Post by May13 » February 6th, 2022, 2:34 am

I found a more serious bug.
LSSS fails after 0012/done with "No spaceship found for seedcolumn 02" for rule B2567/S4568, speed 2c/3, seedcolumn 02, margin 32 and odd-midline.

Code: Select all

#!/bin/bash

lsss=target/release/life_slice_ship_search

# Set data variable to an empty directory with plenty of space for
# storing slices.
# To interrupt the search "echo 0000 > data/stopafter",
# and the script will exit after some time.
# To resume the search "echo 9000 > data/stopafter",
# and run this script. It will resume from where it was stopped.
# Partial results will be saved in the data directory.
# The partials will need to be mirrored.

data=data

margin=32

#midline=--even_midline
midline=--odd_midline
#midline=--gutter
#midline=--zero # use for Asymmetric, add 1 to margin.

parms="--velocity (2,0)c/3 --rule B2567/S4568"

# For an exhaustive search re-run the search with seedcolumn changed to all
# the values from 00 to the margin.
# Note however that if a spaceship is found it will not be possible to
# continue the search for that seed as the disk space will blow up.

seedcolumn=02

declare -a exclude

# The exclude parameter can be used to exclude results that are not wanted.
# This could be useful for excluding repeating patterns or lower-period
# spaceships. It is a manual process.

# Usage:
#
# 1. Find the partial that contains the pattern to exclude.
# 2. Pick a slice (two columns) near the middle of the pattern.
# 3. Trim off excess from the tail of the pattern.
# 4. Pass the two columns to --exclude separated by a /. The "left" column
#    goes first.
#
# Notes:
#
# * Trailing spaces in the exclude pattern are significant.
#
# * The results in the partial files are rotated and sometimes flipped. So the
#   left column (that goes first) is the lower row in the odd-numbered
#   partials and the higher row in the even-numbered partials.
#
# * The amount of information to specify what to exclude is fairly limited
#   (Two columns of the pattern for one phase.) To avoid excluding more
#   patterns you do not intend to do not be aggressive in trimming the
#   tail.

#exclude+=(--exclude)
#exclude+=(" ** * * /**  ***")


grey_start_row=00
grey_end_row=00
grey_margin=02

flush=2000000000
mem=2000000000
threads=
max_width=100

if [ ! -e $data/token ]
then
    echo init >> $data/token
    echo 9000 > $data/stopafter
fi

read token < $data/token

if [ "$token" = "init" ]
then
    mkdir $data/0010
    mkdir $data/0010/00

    if [ $seedcolumn -eq 0 ]
    then
        case $midline in
            --even_midline)
                seed=89;;
            --odd_midline)
                seed=ef;;
            --gutter)
                seed=23;; # search will fail immediately.
            --zero)
                seed=21;; # search will fail immediately.
        esac
        $lsss init $parms --seed $seed --slice_rows 10 --sort left \
        --out_dir $data/0010/00
    else
        case $midline in
            --even_midline)
                seed=19;;
            --odd_midline)
                seed=1f;;
            --gutter)
                seed=13;;
            --zero)
                seed=11;;
        esac
        $lsss init $parms --seed $seed --slice_rows 10 --sort left \
        --out_dir $data/0010/00
    fi

    for s in `seq -w 1 49`
    do
        mkdir $data/0010/$s
        if [ $s -eq $seedcolumn ]
        then
            $lsss init $parms --seed 2f --slice_rows 10 \
            --sort right --out_dir $data/0010/$s
        else
            if [ $s -gt $margin ]
            then
                $lsss init $parms --seed 11 --slice_rows 10 \
                --sort right --out_dir $data/0010/$s
            else
               if [ $s -lt $seedcolumn ]
               then
                  $lsss init $parms --seed 1f --slice_rows 10 \
                   --sort right --out_dir $data/0010/$s
               else
                  $lsss init $parms --seed ff --slice_rows 10 \
                   --sort right --out_dir $data/0010/$s
               fi
            fi
        fi
    done
    token=0010/done
    echo $token > $data/token || exit 1
fi

pass=right
prevlvl=0010
for lvl in `seq -w 11 9999`
do
    test $lvl -le `cat $data/stopafter` || exit
    if [ $pass = right ]
    then
        if [ "$token" = "$prevlvl/done" ]
        then
            date >> $data/search.log
            du $data/ >> $data/search.log
            echo $token
            test $lvl -le `cat $data/stopafter` || exit
            mkdir $data/$lvl
            mkdir $data/$lvl/00
            $lsss join $parms ${threads:+--threads ${threads}} \
                --in_left $data/$prevlvl/00 --in_right $data/$prevlvl/01 \
                --out_left $data/$lvl/00 \
                --left_rows $lvl \
                --left_sort left \
                --flush_left_after $flush \
                --mem $mem \
                --max_width $max_width \
                "${exclude[@]}" \
                $midline || exit 1


            if [ ! -e $data/$lvl/00/l_000.slice ]
            then
                echo "No spaceship found for seedcolumn $seedcolumn"
                exit 2
            fi
            echo -n $lvl,00, >> $data/slice_counts.csv
            echo `$lsss info --slice_count --in_left $data/$lvl/00` \
                >> $data/slice_counts.csv

            token=$lvl/00
            echo $token > $data/token || exit 1
            rm $data/$prevlvl/00/*.slice
            rmdir $data/$prevlvl/00
        fi
        prevslice=00
        for slice in `seq -w 01 48`
        do
            if [ "$token" = "$lvl/$prevslice" ]
            then
                echo $token
                test $lvl -le `cat $data/stopafter` || exit
                mkdir $data/$lvl/$slice
                if [ $slice -gt $margin ]
                then
                    zero="--zero"
                else
                    zero=
                fi

                if [ $lvl -ge $grey_start_row \
                    -a $lvl -lt $grey_end_row \
                    -a $slice -le $grey_margin ]
                then
                    if [ $((slice % 2)) -eq 0 ]
                    then
                        extend_mask="--extend_mask=2"
                    else
                        extend_mask="--extend_mask=4"
                    fi
                else
                    extend_mask=
                fi

                $lsss join $parms ${threads:+--threads ${threads}} \
                    --in_left $data/$lvl/$prevslice \
                    --in_right $data/$prevlvl/$slice \
                    --out_right $data/$lvl/$slice \
                    --right_rows $lvl \
                    --right_sort left \
                    --flush_right_after $flush \
                    --mem $mem \
                    --max_width $max_width \
                    "${exclude[@]}" \
                    $extend_mask \
                    $zero || exit 1

                if [ ! -e $data/$lvl/$slice/l_000.slice ]
                then
                    echo "No spaceship found for seedcolumn $seedcolumn"
                    exit 2
                fi

                echo -n $lvl,$slice, >> $data/slice_counts.csv
                echo `$lsss info --slice_count --in_left $data/$lvl/$slice` \
                    >> $data/slice_counts.csv

                token=$lvl/$slice
                echo $token > $data/token || exit 1
                rm $data/$prevlvl/$slice/*.slice
                rmdir $data/$prevlvl/$slice
            fi
            prevslice=$slice
        done
        if [ "$token" = "$lvl/48" ]
        then
            echo $token
            mkdir $data/$lvl/49
            $lsss join $parms ${threads:+--threads ${threads}} \
                --in_left $data/$lvl/48 --in_right $data/$prevlvl/49 \
                --out_right $data/$lvl/49 \
                --right_rows $lvl \
                --right_sort right \
                --flush_right_after $flush \
                --mem $mem \
                --max_width $max_width \
                --zero || exit 1

            if [ ! -e $data/$lvl/49/r_000.slice ]
            then
                echo "No spaceship found for seedcolumn $seedcolumn"
                exit 2
            fi

            date >> $data/search.log
            du $data/ >> $data/search.log

            echo > $data/${lvl}.partial.txt

            mkdir $data/$lvl/48p
            $lsss join $parms --partial \
                --in_left $data/$lvl/48 --in_right $data/$lvl/49 \
                --out_left $data/$lvl/48p \
                --left_rows $lvl \
                --left_sort right \
                --flush_left_after $flush \
                >> $data/${lvl}.partial.txt

            prevslice=48
            for slice in `seq -w 47 -1 0`
            do
                mkdir $data/$lvl/${slice}p
                $lsss join $parms --partial \
                    --in_left $data/$lvl/$slice \
                    --in_right $data/$lvl/${prevslice}p \
                    --out_left $data/$lvl/${slice}p \
                    --left_rows $lvl \
                    --left_sort right \
                    --flush_left_after $flush \
                    >> $data/${lvl}.partial.txt

                rm $data/$lvl/${prevslice}p/*.slice
                rmdir $data/$lvl/${prevslice}p
                prevslice=$slice
            done

            rm $data/$lvl/00p/*.slice
            rmdir $data/$lvl/00p

            if [ `$lsss info --min_distance $parms --in_left $data/$lvl/48` -eq 0 ]
            then
                echo "Potential Spaceship found, check latest partial!"
            fi

            token=$lvl/done
            echo $token > $data/token || exit 1
            rm $data/$prevlvl/49/*.slice
            rmdir $data/$prevlvl/49
            rmdir $data/$prevlvl
        fi
        pass=left
    else
        if [ "$token" = "$prevlvl/done" ]
        then
            echo $token
            test $lvl -le `cat $data/stopafter` || exit
            mkdir $data/$lvl
            mkdir $data/$lvl/49
            $lsss join $parms ${threads:+--threads ${threads}} \
                --in_left $data/$prevlvl/48 --in_right $data/$prevlvl/49 \
                --out_right $data/$lvl/49 \
                --right_rows $lvl \
                --right_sort right \
                --flush_right_after $flush \
                --mem $mem \
                --max_width $max_width \
                --zero || exit 1

            if [ ! -e $data/$lvl/49/r_000.slice ]
            then
                echo "No spaceship found for seedcolumn $seedcolumn"
                exit 2
            fi

            token=$lvl/49
            echo $token > $data/token
            rm $data/$prevlvl/49/*.slice
            rmdir $data/$prevlvl/49
        fi
        prevslice=49
        for slice in `seq -w 48 -1 1`
        do
            if [ "$token" = "$lvl/$prevslice" ]
            then
                echo $token
                test $lvl -le `cat $data/stopafter` || exit
                mkdir $data/$lvl/$slice
                if [ $slice -gt $margin ]
                then
                    zero="--zero"
                else
                    zero=
                fi

                if [ $lvl -ge $grey_start_row \
                    -a $lvl -lt $grey_end_row \
                    -a $slice -le $grey_margin ]
                then
                    if [ $((slice % 2)) -eq 0 ]
                    then
                        extend_mask="--extend_mask=2"
                    else
                        extend_mask="--extend_mask=4"
                    fi
                else
                    extend_mask=
                fi

                $lsss join $parms ${threads:+--threads ${threads}} \
                    --in_left $data/$prevlvl/$slice \
                    --in_right $data/$lvl/$prevslice \
                    --out_left $data/$lvl/$slice \
                    --left_rows $lvl \
                    --left_sort right \
                    --flush_left_after $flush \
                    --mem $mem \
                    --max_width $max_width \
                    "${exclude[@]}" \
                    $extend_mask \
                    $zero || exit 1

                if [ ! -e $data/$lvl/$slice/r_000.slice ]
                then
                    echo "No spaceship found for seedcolumn $seedcolumn"
                    exit 2
                fi

                echo -n $lvl,$slice, >> $data/slice_counts.csv
                echo `$lsss info --slice_count --in_right $data/$lvl/$slice` \
                    >> $data/slice_counts.csv

                token=$lvl/$slice
                echo $token > $data/token || exit 1
                rm $data/$prevlvl/$slice/*.slice
                rmdir $data/$prevlvl/$slice
            fi
            prevslice=$slice
        done
        if [ "$token" = "$lvl/01" ]
        then
            echo $token
            mkdir $data/$lvl/00

            $lsss join $parms ${threads:+--threads ${threads}} \
                --in_left $data/$prevlvl/00 --in_right $data/$lvl/01 \
                --out_left $data/$lvl/00 \
                --left_rows $lvl \
                --left_sort left \
                --flush_left_after $flush \
                --mem $mem \
                --max_width $max_width \
                "${exclude[@]}" \
                $midline || exit 1

            if [ ! -e $data/$lvl/00/l_000.slice ]
            then
                echo "No spaceship found for seedcolumn $seedcolumn"
                exit 2
            fi

            echo -n $lvl,00, >> $data/slice_counts.csv
            echo `$lsss info --slice_count --in_left $data/$lvl/00` \
                >> $data/slice_counts.csv

            if [ `$lsss info --slice_count --in_left $data/$lvl/00` -eq 1 ]
            then
                # for an asymmetric midline the 0 column has only one
                # slice so we can calculate the partial from the center
                # out as well.

                echo > $data/${lvl}.partial.txt

                mkdir $data/$lvl/00p
                $lsss join $parms --partial \
                    --in_left $data/$lvl/00 --in_right $data/$lvl/01 \
                    --out_left $data/$lvl/00p \
                    --left_rows $lvl \
                    --left_sort left \
                    --flush_left_after $flush \
                    >> $data/${lvl}.partial.txt

                prevslice=00
                for slice in `seq -w 1 49`
                do
                    mkdir $data/$lvl/${slice}p
                    $lsss join $parms --partial \
                        --in_left $data/$lvl/${prevslice}p \
                        --in_right $data/$lvl/$slice \
                        --out_right $data/$lvl/${slice}p \
                        --right_rows $lvl \
                        --right_sort left \
                        --flush_right_after $flush \
                        >> $data/${lvl}.partial.txt

                    rm $data/$lvl/${prevslice}p/*.slice
                    rmdir $data/$lvl/${prevslice}p
                    prevslice=$slice
                done

                rm $data/$lvl/49p/*.slice
                rmdir $data/$lvl/49p

            fi

            token=$lvl/done
            echo $token > $data/token || exit 1
            rm $data/$prevlvl/00/*.slice
            rmdir $data/$prevlvl/00
            rmdir $data/$prevlvl
        fi


        pass=right
    fi
    prevlvl=$lvl
done
0011.partial.txt (0012 is broken):

Code: Select all


   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
 **
* *
  *
***
***
 **
Here is pattern that satisfies the specified conditions, but for some reason is not detected by LSSS:

Code: Select all

x = 19, y = 37, rule = B2567/S4568
9bo$8bo3b7o$9b6ob2o$7bo2b2o2bob3o$6bobob5ob3o$9b2ob7o$6b5o2b6o$6bob3o
2b2o2b2o$4b7o2b6o$3bo2b5o3b2o2bo$5b8ob2o$3b4ob5o2bobo$3bob3o4b4obo$b7o
3bob5o$ob3ob2o2b3ob4o$2bob5o4bob2obo$7o3b2o2bob3o$8o7b2o$b2o2b2o$8o7b
2o$7o3b2o2bob3o$2bob5o4bob2obo$ob3ob2o2b3ob4o$b7o3bob5o$3bob3o4b4obo$
3b4ob5o2bobo$5b8ob2o$3bo2b5o3b2o2bo$4b7o2b6o$6bob3o2b2o2b2o$6b5o2b6o$
9b2ob7o$6bobob5ob3o$7bo2b2o2bob3o$9b6ob2o$8bo3b7o$9bo!
The latest version of hex-gliders.db have 668 gliders from OT hexagonal rules. Let's find more!
My CA (13 rules)
My scripts: new-glider.py v0.2 (new version), nbsearch2a.py, collector.py v0.3

mscibing
Posts: 105
Joined: May 18th, 2010, 8:30 pm

Re: A new spaceship search approach

Post by mscibing » February 6th, 2022, 5:10 pm

May13 wrote:
February 6th, 2022, 2:34 am
I found a more serious bug.
LSSS fails after 0012/done with "No spaceship found for seedcolumn 02" for rule B2567/S4568, speed 2c/3, seedcolumn 02, margin 32 and odd-midline.
Thanks. I've reproduced the problem and am looking into it.
-- Andrew Wade

mscibing
Posts: 105
Joined: May 18th, 2010, 8:30 pm

Re: A new spaceship search approach

Post by mscibing » February 8th, 2022, 11:53 pm

Hi May13,

I've pushed out a fix for the bug. It impacted searches where k+1 == p (1c/2, 2c/3, 3c/4, etc.) and could cause spaceships to be missed. It might also cause inconsistent partials to be printed. It's not impossible to have a spurious "Potential Spaceship found" message even in the absence of the bug, but I suspect that message was related to the bug as well.

Thank you for the report.
-- Andrew Wade

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

Re: A new spaceship search approach

Post by May13 » February 10th, 2022, 10:24 am

mscibing wrote:
February 8th, 2022, 11:53 pm
Hi May13,

I've pushed out a fix for the bug. It impacted searches where k+1 == p (1c/2, 2c/3, 3c/4, etc.) and could cause spaceships to be missed. It might also cause inconsistent partials to be printed. It's not impossible to have a spurious "Potential Spaceship found" message even in the absence of the bug, but I suspect that message was related to the bug as well.

Thank you for the report.
LSSS v3.8.0 really works for 2c/3 orthogonal in B2567/S4568. Here's 2 similar very wide 2c/3 spaceships (frontend from LSSS; completed using JLS):

Code: Select all

x = 355, y = 81, rule = B2567/S4568
34bo2bo19bo$33bo4b17o4bo$34b5ob8ob7o4bo$32bo2b3ob8obo5b2o$31bobobob6ob
2o2bo3bo2b3o2b2o$34b9ob2o2bo4b2o4bobobo$31b4ob5o2b3ob5ob2o3bobo$31bob
4o3bo3b4ob3o5b2o10bo33bo$23bo5b8o2bobob4o4b2ob3o6bo3b2o33bo$21b2o5bo2b
ob10ob9ob4o3b6o30bo5bo3bo$17bo3bo2b2o4b4o4b5ob5ob3ob2ob2ob2ob2o8bo6bo
14bo5bo2bo2bobo$15b2o3bobobob2o8bo3b6o3bo4bob6ob2ob3o3b2o8bo2bobo9b2o
2bo4b2o6bo2bo$14bobo6b2o2b2o4bo10b2o3bo2bo3bob2o2b6ob5o5bo2bobo6bo3bo
2bob2o2bo2bo5bo$16bo2bo4b4o2bo4bobo8b2obo9b6o5b5o2bo3b2o2b6o2bobob3o3b
o2bobo5bo$15b2obo3b3o5b3o13b2o2bo3bo6bob2ob3ob8o8b3o6bo11bo2bo4bo$13b
2o3bobo4bo12b2obo5b4o4b2o2bo4b7ob2o2bobo3bo2b3o2b2obo3bo4b2obobo2bo3b
3o$12bo6bo11b3o2bo5bo2bob2obo6bobo3bob3ob2ob3o4b3obo4bo5bo3bo8b2o3bo4b
o2bo$13b2o6b2ob2o4bo5b2ob2o6b4o14b3ob2o2b5ob3o2bo14b2ob2obo5b3obo$11bo
b3o3b2o2b8o2bo7bo2b7o6bo8bob3o2b11o3bo10bo8bo2b2obo$11b2ob2ob7ob6o5bo
4bo2b2o3b5o2bo13b9ob5obo12b3o8b4obo2bo5bo$10b4ob8o2b4o4bo10b2o5b2o3bo
13b3o3b2obob2obo16bo4b2o11bo$9bob5ob7o2b2o14b9obo4bo14bo3b2ob9o17bo3bo
2bobo6b3o3bo4bo2b4o5bo12b3o11b4o49bo29bo2bo$10b5o2bo2bob2ob8o9b6ob2obo
bo18bo2b4ob3o3b14o5bo2b3ob8ob2o2bob5o5b3o10bo3bo2bo2bo7b2obo2b49obo5bo
21bobobo48bo$9b6o2bob4ob4o3b18o3bo18bobo8b2obob2ob10ob3o2b2o2b3o2b5ob
4ob6ob6ob5ob5o6b2o2bob6o3bob2ob2ob5ob2ob33o2bo4b2o20b4obo3b4o3bo36bobo
bo2bo$9b3ob3obo2bobob10ob4ob9ob2obobo3bo12b3o3bo2b2obob2ob11obo9bob7ob
6ob3o4b5o3b6o2bo9b7obob3ob2obob6o3bo31b2o2bobo3bo16bo3b2o2b5o3b3o5bo
18bo15b2o$7b5ob6ob3ob8ob2ob3ob6o2b2o6bo7bo12bo5bob20obobobo8b4ob6ob5o
2b5ob5o2b4obo7b5o5bob10o2bo33b4obo23b4o2bo3b3o3b3o2b2o8bo8bobo9bo3b2ob
o$7b3o3b2ob3o2b2o3bo2b3obob3ob6ob2o9b4o18b2ob2o5bo10b2o4b2o6bob2ob3o2b
2obob8ob5o2bob8o2bo5b3o4b2o8b3o3b3o32bo6bo3b2ob13o2bob3ob6o4b6o4b6o5bo
2bobo5bo2bo3bobo36bobo$6b4o2b2ob9o2bo2b4o3b6ob2o2bo4bo10b2o11b4o6bo5bo
12bo2b2o3b2o7b3ob4ob11obo3b3ob3o2b2o4bo6bo8b2o4b3obo31bob2o4bo3bob2ob
2ob5ob2obobo3b6o2b5o5b7o2bo6bo10b2o4bo2bo33bo4bo2bo$5bobobo2bo3b3obo2b
ob2o2bob4o6b4o4bo2bo2b2ob2o2bob18o6b3ob3o3bo3bo3b3ob2o6b4o8bob8ob9ob3o
b3obo3bob3o9bo4b2o11bobo20b2obobobo2b2o2b2obob3o5bo3bo6b5obob2o8b3o2bo
2b4ob2ob2obob3o2b2o3b2o3bo27bo6b6obo$6b5obo3bob8o2b3ob3o5bob3o12bo4b6o
b9o4b2ob4o2b2o5b2o3b2ob3o2bo4bo5bo8b3ob3o2bobob4o2b8o11bo8b2o7bo6bo3bo
17bo2bo5bo2bo2b9ob5o2b6o5b7o3bo3b2obobob4o2b4o2b8o2b3o6bo25bo5b2obo3bo
$4bob6o2b2o3b3o4bo2bo6bo3bo4bo5b8o2b2ob4obo8b4ob2ob3obo5b2ob2ob10o17bo
4bo6bob4ob2ob4ob2o8bo2bo10bo3bobo2bo5b2o21b2o3bo4b8o2bobo2bob4o3bo5bob
o3bo4bo3bob3o4b2ob3obo2b3o2b2o4bo3b4o3bo11bo11bo4b2ob2ob2o$3bob8o3b3o
4bo13bobobobo5b7obobob4ob3obo2bo9bob6o4bob7ob3o12bo3bo5bo10b2ob2o3b9o
5bo5b2o10bo4bo7bo2bo2bo2bo6bobo3bob2ob2o4bo2b2o6b2o2bob5o3bo7b2ob3o3bo
2b6o2b3ob13ob4obo2bo2bo3b13obo12b3obo2b2obo$4b3o2b2o2bo7bo4bo6bo4bo3b
2o2b2ob3obob8o3b4ob8o2bo2bob5o4bob2ob2o2b5o3bo5b2o13bo4bo7b7o2b3o4bo2b
obobo9bobobo3b2obo2bo2bobo10bo3bo4bo3bo2bo4b2o4bo6bob2ob3obo9bo2b3o7bo
b2o3bo2b3obobob6obo2bobo6b2o2b5ob6o8b6o6bobo$3b2obob4o2b5o5bobo5bob3o
3b2o2b5obob4obo2b7o2b4ob2obo5b2ob3ob2o4b4o3b4o8b3o2bo13b2o2bo2b3o2b3o
2b7o6b2o14b3ob4o4bo2bo14b2o3bo4bo2b2ob3ob3o4bo2b2o3bobob2obo10b6ob2o
10b5o2bo2b2o2b3o3bo3b8ob6ob6o6bo5b2ob3ob4o$3bob9obo3bobo4b4o4b18ob2o2b
7ob4obo2bo2b2ob5o2b8o3b7ob3o3bo3b3o4b10obo4bo7bob7ob2o5b2o18bo3b3obo2b
o3b2o9bo3bo10b7ob2o4b2o4bob6o10bo4b2o2b5o2b7o2b2ob3ob4o6b3obob3o2bo4b
4ob2ob2ob2obo7b4ob4o$b7ob2o2b5obo2b2o5b3o2b4ob6ob4o3b11o2b14ob2ob2o4b
2o10b9o3bo3bo2bob9obo2bob6obo3b9o3bo3bo4bo3bo7b9obobob2o9b2o2b4o6bo2b
2ob5ob4o3bobo2bo7bobo7bobob5ob10o4b12ob7ob3o3bo2bobo3b5o2bo4b3o4b6o3bo
$ob4obo2b7o2b5ob2o5bob4ob2ob4o3bo6b22ob4o2bo3bo3bo3bo3bo2b2ob4o7bo2b2o
3bo11b2ob3o4bo6b3ob2obob2obobo5b8o2b2ob3o2bo2bo3b3o6b4obobo8bob6ob5obo
2b3o7bo12b6ob7ob16ob2o2b4o5b3ob2o6bob3obobo3b2ob5o2b4obobo$2bob2ob2o3b
ob3o2b3o5b3o3bob3ob2ob4o5bo6b5ob6ob12o2bobobo2bo13b3o3bobobo6bo5bo4b7o
2bo2bo12bobo3bo7b4ob3ob2ob2ob5o2bob3o5b4o2b12ob11obobo9bo4b13ob13ob21o
b7o2b6o6bob2o2bo2b5obo2bo2b5ob2obo$5ob14obo2b4ob2o2b2o2b3ob3obo2b3o10b
2ob3ob3o2b4ob4ob2o2b3obobo14bo2bo2bob2o3bo10b3ob5o2bo3bo2bo4bob3o6bo2b
ob4o3b4o2b4ob4o9b6obob8ob5ob3ob5obobo10bo4b11o2bobo6b4ob4o3b7o3b4ob2o
2b9o5b2o2bo5b3ob4o2b6ob3obo$7ob6obob3ob5o4b3obobob2ob14o4bo3b5ob4ob3ob
3obo2b3ob3o23bo5bo3bobobo2b2ob4o2bob4o7bo2b2obo3b2obob2o2b9o2b6ob2o2bo
3bo2b5obobo3b5ob9ob5obobo8bo3bo2b11o2bo8b6ob2o3bob2ob2o3bob2o2b8o6bo8b
o2b9o2b7ob2obo$b2o2b3ob7ob14o6b2ob14ob4o3bob8ob13obobobo31b3o5bo3bob4o
b2obob2o4bobo11b27obobobo2b7obo3b25o10b3o2b14o10b4ob6ob2ob6ob2o2b2ob2o
2bo4bob3o6bo2b21obo$7ob6obob3ob5o4b3obobob2ob14o4bo3b5ob4ob3ob3obo2b3o
b3o23bo5bo3bobobo2b2ob4o2bob4o7bo2b2obo3b2obob2o2b9o2b6ob2o2bo3bo2b5ob
obo3b5ob9ob5obobo8bo3bo2b11o2bo8b6ob2o3bob2ob2o3bob2o2b8o6bo8bo2b9o2b
7ob2obo$5ob14obo2b4ob2o2b2o2b3ob3obo2b3o10b2ob3ob3o2b4ob4ob2o2b3obobo
14bo2bo2bob2o3bo10b3ob5o2bo3bo2bo4bob3o6bo2bob4o3b4o2b4ob4o9b6obob8ob
5ob3ob5obobo10bo4b11o2bobo6b4ob4o3b7o3b4ob2o2b9o5b2o2bo5b3ob4o2b6ob3ob
o$2bob2ob2o3bob3o2b3o5b3o3bob3ob2ob4o5bo6b5ob6ob12o2bobobo2bo13b3o3bob
obo6bo5bo4b7o2bo2bo12bobo3bo7b4ob3ob2ob2ob5o2bob3o5b4o2b12ob11obobo9bo
4b13ob13ob21ob7o2b6o6bob2o2bo2b5obo2bo2b5ob2obo$ob4obo2b7o2b5ob2o5bob
4ob2ob4o3bo6b22ob4o2bo3bo3bo3bo3bo2b2ob4o7bo2b2o3bo11b2ob3o4bo6b3ob2ob
ob2obobo5b8o2b2ob3o2bo2bo3b3o6b4obobo8bob6ob5obo2b3o7bo12b6ob7ob16ob2o
2b4o5b3ob2o6bob3obobo3b2ob5o2b4obobo$b7ob2o2b5obo2b2o5b3o2b4ob6ob4o3b
11o2b14ob2ob2o4b2o10b9o3bo3bo2bob9obo2bob6obo3b9o3bo3bo4bo3bo7b9obobob
2o9b2o2b4o6bo2b2ob5ob4o3bobo2bo7bobo7bobob5ob10o4b12ob7ob3o3bo2bobo3b
5o2bo4b3o4b6o3bo$3bob9obo3bobo4b4o4b18ob2o2b7ob4obo2bo2b2ob5o2b8o3b7ob
3o3bo3b3o4b10obo4bo7bob7ob2o5b2o18bo3b3obo2bo3b2o9bo3bo10b7ob2o4b2o4bo
b6o10bo4b2o2b5o2b7o2b2ob3ob4o6b3obob3o2bo4b4ob2ob2ob2obo7b4ob4o$3b2obo
b4o2b5o5bobo5bob3o3b2o2b5obob4obo2b7o2b4ob2obo5b2ob3ob2o4b4o3b4o8b3o2b
o13b2o2bo2b3o2b3o2b7o6b2o14b3ob4o4bo2bo14b2o3bo4bo2b2ob3ob3o4bo2b2o3bo
bob2obo10b6ob2o10b5o2bo2b2o2b3o3bo3b8ob6ob6o6bo5b2ob3ob4o$4b3o2b2o2bo
7bo4bo6bo4bo3b2o2b2ob3obob8o3b4ob8o2bo2bob5o4bob2ob2o2b5o3bo5b2o13bo4b
o7b7o2b3o4bo2bobobo9bobobo3b2obo2bo2bobo10bo3bo4bo3bo2bo4b2o4bo6bob2ob
3obo9bo2b3o7bob2o3bo2b3obobob6obo2bobo6b2o2b5ob6o8b6o6bobo$3bob8o3b3o
4bo13bobobobo5b7obobob4ob3obo2bo9bob6o4bob7ob3o12bo3bo5bo10b2ob2o3b9o
5bo5b2o10bo4bo7bo2bo2bo2bo6bobo3bob2ob2o4bo2b2o6b2o2bob5o3bo7b2ob3o3bo
2b6o2b3ob13ob4obo2bo2bo3b13obo12b3obo2b2obo$4bob6o2b2o3b3o4bo2bo6bo3bo
4bo5b8o2b2ob4obo8b4ob2ob3obo5b2ob2ob10o17bo4bo6bob4ob2ob4ob2o8bo2bo10b
o3bobo2bo5b2o21b2o3bo4b8o2bobo2bob4o3bo5bobo3bo4bo3bob3o4b2ob3obo2b3o
2b2o4bo3b4o3bo11bo11bo4b2ob2ob2o$6b5obo3bob8o2b3ob3o5bob3o12bo4b6ob9o
4b2ob4o2b2o5b2o3b2ob3o2bo4bo5bo8b3ob3o2bobob4o2b8o11bo8b2o7bo6bo3bo17b
o2bo5bo2bo2b9ob5o2b6o5b7o3bo3b2obobob4o2b4o2b8o2b3o6bo25bo5b2obo3bo$5b
obobo2bo3b3obo2bob2o2bob4o6b4o4bo2bo2b2ob2o2bob18o6b3ob3o3bo3bo3b3ob2o
6b4o8bob8ob9ob3ob3obo3bob3o9bo4b2o11bobo20b2obobobo2b2o2b2obob3o5bo3bo
6b5obob2o8b3o2bo2b4ob2ob2obob3o2b2o3b2o3bo27bo6b6obo$6b4o2b2ob9o2bo2b
4o3b6ob2o2bo4bo10b2o11b4o6bo5bo12bo2b2o3b2o7b3ob4ob11obo3b3ob3o2b2o4bo
6bo8b2o4b3obo31bob2o4bo3bob2ob2ob5ob2obobo3b6o2b5o5b7o2bo6bo10b2o4bo2b
o33bo4bo2bo$7b3o3b2ob3o2b2o3bo2b3obob3ob6ob2o9b4o18b2ob2o5bo10b2o4b2o
6bob2ob3o2b2obob8ob5o2bob8o2bo5b3o4b2o8b3o3b3o32bo6bo3b2ob13o2bob3ob6o
4b6o4b6o5bo2bobo5bo2bo3bobo36bobo$7b5ob6ob3ob8ob2ob3ob6o2b2o6bo7bo12bo
5bob20obobobo8b4ob6ob5o2b5ob5o2b4obo7b5o5bob10o2bo33b4obo23b4o2bo3b3o
3b3o2b2o8bo8bobo9bo3b2obo$9b3ob3obo2bobob10ob4ob9ob2obobo3bo12b3o3bo2b
2obob2ob11obo9bob7ob6ob3o4b5o3b6o2bo9b7obob3ob2obob6o3bo31b2o2bobo3bo
16bo3b2o2b5o3b3o5bo18bo15b2o$9b6o2bob4ob4o3b18o3bo18bobo8b2obob2ob10ob
3o2b2o2b3o2b5ob4ob6ob6ob5ob5o6b2o2bob6o3bob2ob2ob5ob2ob33o2bo4b2o20b4o
bo3b4o3bo36bobobo2bo$10b5o2bo2bob2ob8o9b6ob2obobo18bo2b4ob3o3b14o5bo2b
3ob8ob2o2bob5o5b3o10bo3bo2bo2bo7b2obo2b49obo5bo21bobobo48bo$9bob5ob7o
2b2o14b9obo4bo14bo3b2ob9o17bo3bo2bobo6b3o3bo4bo2b4o5bo12b3o11b4o49bo
29bo2bo$10b4ob8o2b4o4bo10b2o5b2o3bo13b3o3b2obob2obo16bo4b2o11bo$11b2ob
2ob7ob6o5bo4bo2b2o3b5o2bo13b9ob5obo12b3o8b4obo2bo5bo$11bob3o3b2o2b8o2b
o7bo2b7o6bo8bob3o2b11o3bo10bo8bo2b2obo$13b2o6b2ob2o4bo5b2ob2o6b4o14b3o
b2o2b5ob3o2bo14b2ob2obo5b3obo$12bo6bo11b3o2bo5bo2bob2obo6bobo3bob3ob2o
b3o4b3obo4bo5bo3bo8b2o3bo4bo2bo$13b2o3bobo4bo12b2obo5b4o4b2o2bo4b7ob2o
2bobo3bo2b3o2b2obo3bo4b2obobo2bo3b3o$15b2obo3b3o5b3o13b2o2bo3bo6bob2ob
3ob8o8b3o6bo11bo2bo4bo$16bo2bo4b4o2bo4bobo8b2obo9b6o5b5o2bo3b2o2b6o2bo
bob3o3bo2bobo5bo$14bobo6b2o2b2o4bo10b2o3bo2bo3bob2o2b6ob5o5bo2bobo6bo
3bo2bob2o2bo2bo5bo$15b2o3bobobob2o8bo3b6o3bo4bob6ob2ob3o3b2o8bo2bobo9b
2o2bo4b2o6bo2bo$17bo3bo2b2o4b4o4b5ob5ob3ob2ob2ob2ob2o8bo6bo14bo5bo2bo
2bobo$21b2o5bo2bob10ob9ob4o3b6o30bo5bo3bo$23bo5b8o2bobob4o4b2ob3o6bo3b
2o33bo$31bob4o3bo3b4ob3o5b2o10bo33bo$31b4ob5o2b3ob5ob2o3bobo$34b9ob2o
2bo4b2o4bobobo$31bobobob6ob2o2bo3bo2b3o2b2o$32bo2b3ob8obo5b2o$34b5ob8o
b7o4bo$33bo4b17o4bo$34bo2bo19bo!

Code: Select all

x = 355, y = 81, rule = B2567/S4568
34bo2bo19bo$33bo4b17o4bo$34b5ob8ob7o4bo$32bo2b3ob8obo5b2o$31bobobob6ob
2o2bo3bo2b3o2b2o$34b9ob2o2bo4b2o4bobobo$31b4ob5o2b3ob5ob2o3bobo$31bob
4o3bo3b4ob3o5b2o10bo33bo$23bo5b8o2bobob4o4b2ob3o6bo3b2o33bo$21b2o5bo2b
ob10ob9ob4o3b6o30bo5bo3bo$17bo3bo2b2o4b4o4b5ob5ob3ob2ob2ob2ob2o8bo6bo
14bo5bo2bo2bobo$15b2o3bobobob2o8bo3b6o3bo4bob6ob2ob3o3b2o8bo2bobo9b2o
2bo4b2o6bo2bo$14bobo6b2o2b2o4bo10b2o3bo2bo3bob2o2b6ob5o5bo2bobo6bo3bo
2bob2o2bo2bo5bo$16bo2bo4b4o2bo4bobo8b2obo9b6o5b5o2bo3b2o2b6o2bobob3o3b
o2bobo5bo$15b2obo3b3o5b3o13b2o2bo3bo6bob2ob3ob8o8b3o6bo11bo2bo4bo$13b
2o3bobo4bo12b2obo5b4o4b2o2bo4b7ob2o2bobo3bo2b3o2b2obo3bo4b2obobo2bo3b
3o$12bo6bo11b3o2bo5bo2bob2obo6bobo3bob3ob2ob3o4b3obo4bo5bo3bo8b2o3bo4b
o2bo$13b2o6b2ob2o4bo5b2ob2o6b4o14b3ob2o2b5ob3o2bo14b2ob2obo5b3obo$11bo
b3o3b2o2b8o2bo7bo2b7o6bo8bob3o2b11o3bo10bo8bo2b2obo$11b2ob2ob7ob6o5bo
4bo2b2o3b5o2bo13b9ob5obo12b3o8b4obo2bo5bo$10b4ob8o2b4o4bo10b2o5b2o3bo
13b3o3b2obob2obo16bo4b2o11bo$9bob5ob7o2b2o14b9obo4bo14bo3b2ob9o17bo3bo
2bobo6b3o3bo4bo2b4o5bo12b3o11b4o49bo29bo2bo$10b5o2bo2bob2ob8o9b6ob2obo
bo18bo2b4ob3o3b14o5bo2b3ob8ob2o2bob5o5b3o10bo3bo2bo2bo7b2obo2b49obo5bo
21bobobo48bo$9b6o2bob4ob4o3b18o3bo18bobo8b2obob2ob10ob3o2b2o2b3o2b5ob
4ob6ob6ob5ob5o6b2o2bob6o3bob2ob2ob5ob2ob33o2bo4b2o20b4obo3b4o3bo36bobo
bo2bo$9b3ob3obo2bobob10ob4ob9ob2obobo3bo12b3o3bo2b2obob2ob11obo9bob7ob
6ob3o4b5o3b6o2bo9b7obob3ob2obob6o3bo31b2o2bobo3bo16bo3b2o2b5o3b3o5bo
18bo15b2o$7b5ob6ob3ob8ob2ob3ob6o2b2o6bo7bo12bo5bob20obobobo8b4ob6ob5o
2b5ob5o2b4obo7b5o5bob10o2bo33b4obo23b4o2bo3b3o3b3o2b2o2bo5bo8bobo9bo3b
2obo$7b3o3b2ob3o2b2o3bo2b3obob3ob6ob2o9b4o18b2ob2o5bo10b2o4b2o6bob2ob
3o2b2obob8ob5o2bob8o2bo5b3o4b2o8b3o3b3o32bo6bo3b2ob13o2bob3ob6o4b6o5b
5o5bo2bobo5bo2bo3bobo36bobo$6b4o2b2ob9o2bo2b4o3b6ob2o2bo4bo10b2o11b4o
6bo5bo12bo2b2o3b2o7b3ob4ob11obo3b3ob3o2b2o4bo6bo8b2o4b3obo31bob2o4bo3b
ob2ob2ob5ob2obobo3b6o2b5o5b7o2bo6bo10b2o4bo2bo33bo4bo2bo$5bobobo2bo3b
3obo2bob2o2bob4o6b4o4bo2bo2b2ob2o2bob18o6b3ob3o3bo3bo3b3ob2o6b4o8bob8o
b9ob3ob3obo3bob3o9bo4b2o11bobo20b2obobobo2b2o2b2obob3o5bo3bo6b5obob2o
8b3o2bo2b4ob2ob2obob3o2b2o3b2o3bo27bo6b6obo$6b5obo3bob8o2b3ob3o5bob3o
12bo4b6ob9o4b2ob4o2b2o5b2o3b2ob3o2bo4bo5bo8b3ob3o2bobob4o2b8o11bo8b2o
7bo6bo3bo17bo2bo5bo2bo2b9ob5o2b6o5b7o3bo3b2obobob4o2b4o2b8o2b3o6bo25bo
5b2obo3bo$4bob6o2b2o3b3o4bo2bo6bo3bo4bo5b8o2b2ob4obo8b4ob2ob3obo5b2ob
2ob10o17bo4bo6bob4ob2ob4ob2o8bo2bo10bo3bobo2bo5b2o21b2o3bo4b8o2bobo2bo
b4o3bo5bobo3bo4bo3bob3o4b2ob3obo2b3o2b2o4bo3b4o3bo11bo11bo4b2ob2ob2o$
3bob8o3b3o4bo13bobobobo5b7obobob4ob3obo2bo9bob6o4bob7ob3o12bo3bo5bo10b
2ob2o3b9o5bo5b2o10bo4bo7bo2bo2bo2bo6bobo3bob2ob2o4bo2b2o6b2o2bob5o3bo
7b2ob3o3bo2b6o2b3ob13ob4obo2bo2bo3b13obo12b3obo2b2obo$4b3o2b2o2bo7bo4b
o6bo4bo3b2o2b2ob3obob8o3b4ob8o2bo2bob5o4bob2ob2o2b5o3bo5b2o13bo4bo7b7o
2b3o4bo2bobobo9bobobo3b2obo2bo2bobo10bo3bo4bo3bo2bo4b2o4bo6bob2ob3obo
9bo2b3o7bob2o3bo2b3obobob6obo2bobo6b2o2b5ob6o8b6o6bobo$3b2obob4o2b5o5b
obo5bob3o3b2o2b5obob4obo2b7o2b4ob2obo5b2ob3ob2o4b4o3b4o8b3o2bo13b2o2bo
2b3o2b3o2b7o6b2o14b3ob4o4bo2bo14b2o3bo4bo2b2ob3ob3o4bo2b2o3bobob2obo
10b6ob2o10b5o2bo2b2o2b3o3bo3b8ob6ob6o6bo5b2ob3ob4o$3bob9obo3bobo4b4o4b
18ob2o2b7ob4obo2bo2b2ob5o2b8o3b7ob3o3bo3b3o4b10obo4bo7bob7ob2o5b2o18bo
3b3obo2bo3b2o9bo3bo10b7ob2o4b2o4bob6o10bo4b2o2b5o2b7o2b2ob3ob4o6b3obob
3o2bo4b4ob2ob2ob2obo7b4ob4o$b7ob2o2b5obo2b2o5b3o2b4ob6ob4o3b11o2b14ob
2ob2o4b2o10b9o3bo3bo2bob9obo2bob6obo3b9o3bo3bo4bo3bo7b9obobob2o9b2o2b
4o6bo2b2ob5ob4o3bobo2bo7bobo7bobob5ob10o4b12ob7ob3o3bo2bobo3b5o2bo4b3o
4b6o3bo$ob4obo2b7o2b5ob2o5bob4ob2ob4o3bo6b22ob4o2bo3bo3bo3bo3bo2b2ob4o
7bo2b2o3bo11b2ob3o4bo6b3ob2obob2obobo5b8o2b2ob3o2bo2bo3b3o6b4obobo8bob
6ob5obo2b3o7bo12b6ob7ob16ob2o2b4o5b3ob2o6bob3obobo3b2ob5o2b4obobo$2bob
2ob2o3bob3o2b3o5b3o3bob3ob2ob4o5bo6b5ob6ob12o2bobobo2bo13b3o3bobobo6bo
5bo4b7o2bo2bo12bobo3bo7b4ob3ob2ob2ob5o2bob3o5b4o2b12ob11obobo9bo4b13ob
13ob21ob7o2b6o6bob2o2bo2b5obo2bo2b5ob2obo$5ob14obo2b4ob2o2b2o2b3ob3obo
2b3o10b2ob3ob3o2b4ob4ob2o2b3obobo14bo2bo2bob2o3bo10b3ob5o2bo3bo2bo4bob
3o6bo2bob4o3b4o2b4ob4o9b6obob8ob5ob3ob5obobo10bo4b11o2bobo6b4ob4o3b7o
3b4ob2o2b9o5b2o2bo5b3ob4o2b6ob3obo$7ob6obob3ob5o4b3obobob2ob14o4bo3b5o
b4ob3ob3obo2b3ob3o23bo5bo3bobobo2b2ob4o2bob4o7bo2b2obo3b2obob2o2b9o2b
6ob2o2bo3bo2b5obobo3b5ob9ob5obobo8bo3bo2b11o2bo8b6ob2o3bob2ob2o3bob2o
2b8o6bo8bo2b9o2b7ob2obo$b2o2b3ob7ob14o6b2ob14ob4o3bob8ob13obobobo31b3o
5bo3bob4ob2obob2o4bobo11b27obobobo2b7obo3b25o10b3o2b14o10b4ob6ob2ob6ob
2o2b2ob2o2bo4bob3o6bo2b21obo$7ob6obob3ob5o4b3obobob2ob14o4bo3b5ob4ob3o
b3obo2b3ob3o23bo5bo3bobobo2b2ob4o2bob4o7bo2b2obo3b2obob2o2b9o2b6ob2o2b
o3bo2b5obobo3b5ob9ob5obobo8bo3bo2b11o2bo8b6ob2o3bob2ob2o3bob2o2b8o6bo
8bo2b9o2b7ob2obo$5ob14obo2b4ob2o2b2o2b3ob3obo2b3o10b2ob3ob3o2b4ob4ob2o
2b3obobo14bo2bo2bob2o3bo10b3ob5o2bo3bo2bo4bob3o6bo2bob4o3b4o2b4ob4o9b
6obob8ob5ob3ob5obobo10bo4b11o2bobo6b4ob4o3b7o3b4ob2o2b9o5b2o2bo5b3ob4o
2b6ob3obo$2bob2ob2o3bob3o2b3o5b3o3bob3ob2ob4o5bo6b5ob6ob12o2bobobo2bo
13b3o3bobobo6bo5bo4b7o2bo2bo12bobo3bo7b4ob3ob2ob2ob5o2bob3o5b4o2b12ob
11obobo9bo4b13ob13ob21ob7o2b6o6bob2o2bo2b5obo2bo2b5ob2obo$ob4obo2b7o2b
5ob2o5bob4ob2ob4o3bo6b22ob4o2bo3bo3bo3bo3bo2b2ob4o7bo2b2o3bo11b2ob3o4b
o6b3ob2obob2obobo5b8o2b2ob3o2bo2bo3b3o6b4obobo8bob6ob5obo2b3o7bo12b6ob
7ob16ob2o2b4o5b3ob2o6bob3obobo3b2ob5o2b4obobo$b7ob2o2b5obo2b2o5b3o2b4o
b6ob4o3b11o2b14ob2ob2o4b2o10b9o3bo3bo2bob9obo2bob6obo3b9o3bo3bo4bo3bo
7b9obobob2o9b2o2b4o6bo2b2ob5ob4o3bobo2bo7bobo7bobob5ob10o4b12ob7ob3o3b
o2bobo3b5o2bo4b3o4b6o3bo$3bob9obo3bobo4b4o4b18ob2o2b7ob4obo2bo2b2ob5o
2b8o3b7ob3o3bo3b3o4b10obo4bo7bob7ob2o5b2o18bo3b3obo2bo3b2o9bo3bo10b7ob
2o4b2o4bob6o10bo4b2o2b5o2b7o2b2ob3ob4o6b3obob3o2bo4b4ob2ob2ob2obo7b4ob
4o$3b2obob4o2b5o5bobo5bob3o3b2o2b5obob4obo2b7o2b4ob2obo5b2ob3ob2o4b4o
3b4o8b3o2bo13b2o2bo2b3o2b3o2b7o6b2o14b3ob4o4bo2bo14b2o3bo4bo2b2ob3ob3o
4bo2b2o3bobob2obo10b6ob2o10b5o2bo2b2o2b3o3bo3b8ob6ob6o6bo5b2ob3ob4o$4b
3o2b2o2bo7bo4bo6bo4bo3b2o2b2ob3obob8o3b4ob8o2bo2bob5o4bob2ob2o2b5o3bo
5b2o13bo4bo7b7o2b3o4bo2bobobo9bobobo3b2obo2bo2bobo10bo3bo4bo3bo2bo4b2o
4bo6bob2ob3obo9bo2b3o7bob2o3bo2b3obobob6obo2bobo6b2o2b5ob6o8b6o6bobo$
3bob8o3b3o4bo13bobobobo5b7obobob4ob3obo2bo9bob6o4bob7ob3o12bo3bo5bo10b
2ob2o3b9o5bo5b2o10bo4bo7bo2bo2bo2bo6bobo3bob2ob2o4bo2b2o6b2o2bob5o3bo
7b2ob3o3bo2b6o2b3ob13ob4obo2bo2bo3b13obo12b3obo2b2obo$4bob6o2b2o3b3o4b
o2bo6bo3bo4bo5b8o2b2ob4obo8b4ob2ob3obo5b2ob2ob10o17bo4bo6bob4ob2ob4ob
2o8bo2bo10bo3bobo2bo5b2o21b2o3bo4b8o2bobo2bob4o3bo5bobo3bo4bo3bob3o4b
2ob3obo2b3o2b2o4bo3b4o3bo11bo11bo4b2ob2ob2o$6b5obo3bob8o2b3ob3o5bob3o
12bo4b6ob9o4b2ob4o2b2o5b2o3b2ob3o2bo4bo5bo8b3ob3o2bobob4o2b8o11bo8b2o
7bo6bo3bo17bo2bo5bo2bo2b9ob5o2b6o5b7o3bo3b2obobob4o2b4o2b8o2b3o6bo25bo
5b2obo3bo$5bobobo2bo3b3obo2bob2o2bob4o6b4o4bo2bo2b2ob2o2bob18o6b3ob3o
3bo3bo3b3ob2o6b4o8bob8ob9ob3ob3obo3bob3o9bo4b2o11bobo20b2obobobo2b2o2b
2obob3o5bo3bo6b5obob2o8b3o2bo2b4ob2ob2obob3o2b2o3b2o3bo27bo6b6obo$6b4o
2b2ob9o2bo2b4o3b6ob2o2bo4bo10b2o11b4o6bo5bo12bo2b2o3b2o7b3ob4ob11obo3b
3ob3o2b2o4bo6bo8b2o4b3obo31bob2o4bo3bob2ob2ob5ob2obobo3b6o2b5o5b7o2bo
6bo10b2o4bo2bo33bo4bo2bo$7b3o3b2ob3o2b2o3bo2b3obob3ob6ob2o9b4o18b2ob2o
5bo10b2o4b2o6bob2ob3o2b2obob8ob5o2bob8o2bo5b3o4b2o8b3o3b3o32bo6bo3b2ob
13o2bob3ob6o4b6o5b5o5bo2bobo5bo2bo3bobo36bobo$7b5ob6ob3ob8ob2ob3ob6o2b
2o6bo7bo12bo5bob20obobobo8b4ob6ob5o2b5ob5o2b4obo7b5o5bob10o2bo33b4obo
23b4o2bo3b3o3b3o2b2o2bo5bo8bobo9bo3b2obo$9b3ob3obo2bobob10ob4ob9ob2obo
bo3bo12b3o3bo2b2obob2ob11obo9bob7ob6ob3o4b5o3b6o2bo9b7obob3ob2obob6o3b
o31b2o2bobo3bo16bo3b2o2b5o3b3o5bo18bo15b2o$9b6o2bob4ob4o3b18o3bo18bobo
8b2obob2ob10ob3o2b2o2b3o2b5ob4ob6ob6ob5ob5o6b2o2bob6o3bob2ob2ob5ob2ob
33o2bo4b2o20b4obo3b4o3bo36bobobo2bo$10b5o2bo2bob2ob8o9b6ob2obobo18bo2b
4ob3o3b14o5bo2b3ob8ob2o2bob5o5b3o10bo3bo2bo2bo7b2obo2b49obo5bo21bobobo
48bo$9bob5ob7o2b2o14b9obo4bo14bo3b2ob9o17bo3bo2bobo6b3o3bo4bo2b4o5bo
12b3o11b4o49bo29bo2bo$10b4ob8o2b4o4bo10b2o5b2o3bo13b3o3b2obob2obo16bo
4b2o11bo$11b2ob2ob7ob6o5bo4bo2b2o3b5o2bo13b9ob5obo12b3o8b4obo2bo5bo$
11bob3o3b2o2b8o2bo7bo2b7o6bo8bob3o2b11o3bo10bo8bo2b2obo$13b2o6b2ob2o4b
o5b2ob2o6b4o14b3ob2o2b5ob3o2bo14b2ob2obo5b3obo$12bo6bo11b3o2bo5bo2bob
2obo6bobo3bob3ob2ob3o4b3obo4bo5bo3bo8b2o3bo4bo2bo$13b2o3bobo4bo12b2obo
5b4o4b2o2bo4b7ob2o2bobo3bo2b3o2b2obo3bo4b2obobo2bo3b3o$15b2obo3b3o5b3o
13b2o2bo3bo6bob2ob3ob8o8b3o6bo11bo2bo4bo$16bo2bo4b4o2bo4bobo8b2obo9b6o
5b5o2bo3b2o2b6o2bobob3o3bo2bobo5bo$14bobo6b2o2b2o4bo10b2o3bo2bo3bob2o
2b6ob5o5bo2bobo6bo3bo2bob2o2bo2bo5bo$15b2o3bobobob2o8bo3b6o3bo4bob6ob
2ob3o3b2o8bo2bobo9b2o2bo4b2o6bo2bo$17bo3bo2b2o4b4o4b5ob5ob3ob2ob2ob2ob
2o8bo6bo14bo5bo2bo2bobo$21b2o5bo2bob10ob9ob4o3b6o30bo5bo3bo$23bo5b8o2b
obob4o4b2ob3o6bo3b2o33bo$31bob4o3bo3b4ob3o5b2o10bo33bo$31b4ob5o2b3ob5o
b2o3bobo$34b9ob2o2bo4b2o4bobobo$31bobobob6ob2o2bo3bo2b3o2b2o$32bo2b3ob
8obo5b2o$34b5ob8ob7o4bo$33bo4b17o4bo$34bo2bo19bo!
The search time is surprisingly small for spaceship of this width - 16 hours!
About false "Potential Spaceship": I think that this bug is related to process of extracting a partial spaceship. I have not seen such messages, but this partial looks unusual (from 0149.partial.txt):

Code: Select all

x = 49, y = 75, rule = B2567/S4568
24bo$26bo$23bo2b2o$22bo2bo2b8o11b2o$25bob2ob2obo4b8o2bo$17bo5b2ob4o2bo
3b5ob2ob4o$21b9o2bo2b3o2bob2ob3o$16bo2b7ob3o2b3o2bo2b5obobo$15bo2b2ob
9obob5ob5o2b3o$18b3o2b2o2b17o2bobo$14bob7ob17ob2ob4o$14bob2o2b2o2bo2b
4obobo2b4ob2o2b3o$13b3o2b3o7b2obob3ob3ob2ob5o$12bob2obo2bo2b2o8b2ob6ob
4o$13bob2ob6ob5o4bob2o3b2o2bobo$12b2obob6obobo2b9o3b2o3b2o$12bob8obob
4o2b5ob4ob7o$10b7o2b10ob2ob10ob2o2bo$9bo2b5o7b7o2bob8o2b4o$11b6o3bobo
2b2ob8ob5ob6o$9b12obobobo3b6ob12o$9b3ob3ob2ob2o5bobo3bob12obo$7b5obo3b
2o11bo3bob6o2b3obo$7b3o3b3ob2o2b3o4bo2bo2b2ob4o3b4o$6b4o2b2obo2b3o2b4o
2bobo3b2o4bo$5bobobo2bo2b6o7b2o9bo$6b5obo2b8o2bo3bo$4bob6o2bo2b4o3bo4b
o$3bob8o11b3o2bo6bo$4b3o2b2o2bo13bobo4b2ob2o$3b2obob4o2bo2bo6b4o6bobo$
3bob9ob2ob9o5bo5b2o$b7ob2o2b4ob5o2bo3bo4bo2bo2bo$ob4obo2b15o5b2o2bo3bo
6bo$2bob2ob2o3bob10o7b2o2b2o4b2o$5ob11ob4obo6b9obo2bo$7ob6obob6o4bo2b
9o2bo3bobo$b2o2b3ob7obo2b3obo2bo2bobobobobo4bobo$7ob6obob6o4bo2b9o2bo
3bobo$5ob11ob4obo6b9obo2bo$2bob2ob2o3bob10o7b2o2b2o4b2o$ob4obo2b15o5b
2o2bo3bo6bo$b7ob2o2b4ob5o2bo3bo4bo2bo2bo$3bob9ob2ob9o5bo5b2o$3b2obob4o
2bo2bo6b4o6bobo$4b3o2b2o2bo13bobo4b2ob2o$3bob8o11b3o2bo6bo$4bob6o2bo2b
4o3bo4bo$6b5obo2b8o2bo3bo$5bobobo2bo2b6o7b2o9bo$6b4o2b2obo2b3o2b4o2bob
o3b2o4bo$7b3o3b3ob2o2b3o4bo2bo2b2ob4o3b4o$7b5obo3b2o11bo3bob6o2b3obo$
9b3ob3ob2ob2o5bobo3bob12obo$9b12obobobo3b6ob12o$11b6o3bobo2b2ob8ob5ob
6o$9bo2b5o7b7o2bob8o2b4o$10b7o2b10ob2ob10ob2o2bo$12bob8obob4o2b5ob4ob
7o$12b2obob6obobo2b9o3b2o3b2o$13bob2ob6ob5o4bob2o3b2o2bobo$12bob2obo2b
o2b2o8b2ob6ob4o$13b3o2b3o7b2obob3ob3ob2ob5o$14bob2o2b2o2bo2b4obobo2b4o
b2o2b3o$14bob7ob17ob2ob4o$18b3o2b2o2b17o2bobo$15bo2b2ob9obob5ob5o2b3o$
16bo2b7ob3o2b3o2bo2b5obobo$21b9o2bo2b3o2bob2ob3o$17bo5b2ob4o2bo3b5ob2o
b4o$25bob2ob2obo4b8o2bo$22bo2bo2b8o11b2o$23bo2b2o$26bo$24bo!
While most partials are empty in the middle, this one has an unfinished component that can be seen as finished by the program.
The latest version of hex-gliders.db have 668 gliders from OT hexagonal rules. Let's find more!
My CA (13 rules)
My scripts: new-glider.py v0.2 (new version), nbsearch2a.py, collector.py v0.3

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

Re: A new spaceship search approach

Post by LaundryPizza03 » March 4th, 2022, 3:58 pm

My copy of LSSS stopped working properly. It just ran to 98 slices and aborted after the first row was finished.

Code: Select all

> bash search.sh
0010/done
0011/00
0011/01
0011/02
0011/03
0011/04
0011/05
0011/06
0011/07
0011/08
0011/09
0011/10
0011/11
0011/12
0011/13
0011/14
0011/15
0011/16
0011/17
0011/18
0011/19
0011/20
0011/21
0011/22
0011/23
0011/24
0011/25
0011/26
0011/27
0011/28
0011/29
0011/30
0011/31
0011/32
0011/33
0011/34
0011/35
0011/36
0011/37
0011/38
0011/39
0011/40
0011/41
0011/42
0011/43
0011/44
0011/45
0011/46
0011/47
0011/48
0011/49
0011/50
0011/51
0011/52
0011/53
0011/54
0011/55
0011/56
0011/57
0011/58
0011/59
0011/60
0011/61
0011/62
0011/63
0011/64
0011/65
0011/66
0011/67
0011/68
0011/69
0011/70
0011/71
0011/72
0011/73
0011/74
0011/75
0011/76
0011/77
0011/78
0011/79
0011/80
0011/81
0011/82
0011/83
0011/84
0011/85
0011/86
0011/87
0011/88
0011/89
0011/90
0011/91
0011/92
0011/93
0011/94
0011/95
0011/96
0011/97
0011/98
No spaceship found for seedcolumn 01
I couldn't correct this by pulling from git, and the program completely stopped working after I deleted the LSSS directory and cloned from github.

Code: Select all

> bash search.sh
search.sh: line 97: target/release/life_slice_ship_search: No such file or directory
search.sh: line 132: target/release/life_slice_ship_search: No such file or directory
search.sh: line 132: target/release/life_slice_ship_search: No such file or directory
search.sh: line 132: target/release/life_slice_ship_search: No such file or directory
search.sh: line 132: target/release/life_slice_ship_search: No such file or directory
search.sh: line 132: target/release/life_slice_ship_search: No such file or directory
search.sh: line 132: target/release/life_slice_ship_search: No such file or directory
search.sh: line 132: target/release/life_slice_ship_search: No such file or directory
search.sh: line 132: target/release/life_slice_ship_search: No such file or directory
search.sh: line 132: target/release/life_slice_ship_search: No such file or directory
search.sh: line 132: target/release/life_slice_ship_search: No such file or directory
search.sh: line 132: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
0010/done
search.sh: line 157: target/release/life_slice_ship_search: No such file or directory
EDIT: Running the command from the readme generated an error while compiling:

Code: Select all

> RUSTFLAGS='-C target-cpu=native' cargo build --release
    Updating crates.io index
  Downloaded unicode-width v0.1.9
  Downloaded num_cpus v1.13.1
  Downloaded regex v1.5.4
  Downloaded libc v0.2.119
  Downloaded memchr v2.4.1
   Compiling memchr v2.4.1
   Compiling libc v0.2.119
   Compiling regex-syntax v0.6.25
   Compiling unicode-width v0.1.9
   Compiling std-semaphore v0.1.0
   Compiling getopts v0.2.21
   Compiling aho-corasick v0.7.18
   Compiling num_cpus v1.13.1
   Compiling regex v1.5.4
   Compiling life_slice_ship_search v3.8.0 (/Users/gb/life_slice_ship_search)
error[E0658]: use of unstable library feature 'bufreader_seek_relative'
   --> src/chunkio.rs:201:18
    |
201 |                 .seek_relative(self.current_offset as i64 - self.reader_offset as i64)?;
    |                  ^^^^^^^^^^^^^
    |
    = note: see issue #31100 <https://github.com/rust-lang/rust/issues/31100> for more information

error: aborting due to previous error

For more information about this error, try `rustc --explain E0658`.
error: could not compile `life_slice_ship_search`.

To learn more, run the command again with --verbose.

Code: Select all

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

mscibing
Posts: 105
Joined: May 18th, 2010, 8:30 pm

Re: A new spaceship search approach

Post by mscibing » March 16th, 2022, 8:54 pm

Please try updating to the latest version of rust.

The command "rustup update" should update the version of the compiler.
-- Andrew Wade

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

Re: A new spaceship search approach

Post by LaundryPizza03 » March 21st, 2022, 1:39 am

mscibing wrote:
March 16th, 2022, 8:54 pm
Please try updating to the latest version of rust.

The command "rustup update" should update the version of the compiler.
That didn't work.

Code: Select all

> rustup update
info: syncing channel updates for 'stable-x86_64-apple-darwin'
info: latest update on 2022-02-24, rust version 1.59.0 (9d1b2106e 2022-02-23)
info: downloading component 'cargo'
info: downloading component 'clippy'
info: downloading component 'rust-docs'
info: downloading component 'rust-std'
info: downloading component 'rustc'
 52.9 MiB /  52.9 MiB (100 %)  44.0 MiB/s in  1s ETA:  0s
info: downloading component 'rustfmt'
info: removing previous version of component 'cargo'
info: removing previous version of component 'clippy'
info: removing previous version of component 'rust-docs'
info: removing previous version of component 'rust-std'
info: removing previous version of component 'rustc'
info: removing previous version of component 'rustfmt'
info: installing component 'cargo'
  4.3 MiB /   4.3 MiB (100 %)   3.8 MiB/s in  1s ETA:  0s
info: installing component 'clippy'
info: installing component 'rust-docs'
 19.3 MiB /  19.3 MiB (100 %)   2.4 MiB/s in  9s ETA:  0s
info: installing component 'rust-std'
 24.5 MiB /  24.5 MiB (100 %)   3.6 MiB/s in  6s ETA:  0s
info: installing component 'rustc'
 52.9 MiB /  52.9 MiB (100 %)   4.1 MiB/s in 13s ETA:  0s
info: installing component 'rustfmt'
info: checking for self-updates
info: downloading self-update

  stable-x86_64-apple-darwin updated - rustc 1.59.0 (9d1b2106e 2022-02-23) (from rustc 1.43.0 (4fb7144ed 2020-04-20))

> rm -r data
> mkdir data
> bash search.sh
search.sh: line 97: target/release/life_slice_ship_search: No such file or directory
search.sh: line 132: target/release/life_slice_ship_search: No such file or directory
search.sh: line 132: target/release/life_slice_ship_search: No such file or directory
search.sh: line 132: target/release/life_slice_ship_search: No such file or directory
search.sh: line 132: target/release/life_slice_ship_search: No such file or directory
search.sh: line 132: target/release/life_slice_ship_search: No such file or directory
search.sh: line 132: target/release/life_slice_ship_search: No such file or directory
search.sh: line 132: target/release/life_slice_ship_search: No such file or directory
search.sh: line 132: target/release/life_slice_ship_search: No such file or directory
search.sh: line 132: target/release/life_slice_ship_search: No such file or directory
search.sh: line 132: target/release/life_slice_ship_search: No such file or directory
search.sh: line 132: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
search.sh: line 124: target/release/life_slice_ship_search: No such file or directory
0010/done
search.sh: line 157: target/release/life_slice_ship_search: No such file or directory
It's calling a nonexistent file that is supposed to be in the ./target/release directory, and which is defined in line 3 of the search.sh.

EDIT: A user told me to write

Code: Select all

RUSTFLAGS='-C target-cpu=native' cargo build --release
which took me back to the original problem: LSSS stopped making the frontend correctly.

Code: Select all

> rm -r data    
> mkdir data    
> bash search.sh
0010/done
0011/00
0011/01
0011/02
0011/03
0011/04
0011/05
0011/06
0011/07
0011/08
0011/09
0011/10
0011/11
0011/12
0011/13
0011/14
0011/15
0011/16
0011/17
0011/18
0011/19
0011/20
0011/21
0011/22
0011/23
0011/24
0011/25
0011/26
0011/27
0011/28
0011/29
0011/30
0011/31
0011/32
0011/33
0011/34
0011/35
0011/36
0011/37
0011/38
0011/39
0011/40
0011/41
0011/42
0011/43
0011/44
0011/45
0011/46
0011/47
0011/48
0011/49
0011/50
0011/51
0011/52
0011/53
0011/54
0011/55
0011/56
0011/57
0011/58
0011/59
0011/60
0011/61
0011/62
0011/63
0011/64
0011/65
0011/66
0011/67
0011/68
0011/69
0011/70
0011/71
0011/72
0011/73
0011/74
0011/75
0011/76
0011/77
0011/78
0011/79
0011/80
0011/81
0011/82
0011/83
0011/84
0011/85
0011/86
0011/87
0011/88
0011/89
0011/90
0011/91
0011/92
0011/93
0011/94
0011/95
0011/96
0011/97
0011/98
No spaceship found for seedcolumn 00

Code: Select all

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

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

Re: A new spaceship search approach

Post by AforAmpere » March 29th, 2022, 11:00 pm

I was having a similar issue of LSSS just stopping at depth 11 on everything on the newest version. The version where the threads parameter was changed works for me.
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.

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

Re: A new spaceship search approach

Post by LaundryPizza03 » March 30th, 2022, 8:03 pm

AforAmpere wrote:
March 29th, 2022, 11:00 pm
I was having a similar issue of LSSS just stopping at depth 11 on everything on the newest version. The version where the threads parameter was changed works for me.
Sure, what version do I checkout?

Code: Select all

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

User avatar
dexter1
Posts: 71
Joined: February 26th, 2020, 8:46 am

Re: A new spaceship search approach

Post by dexter1 » March 31st, 2022, 6:17 am

AforAmpere wrote:
March 29th, 2022, 11:00 pm
I was having a similar issue of LSSS just stopping at depth 11 on everything on the newest version. The version where the threads parameter was changed works for me.
I experienced this as well. The previous version worked for me so i made a git diff of the current and previous version in the main branch:

Code: Select all

diff --git a/Cargo.toml b/Cargo.toml
index c9457b3..8f8391f 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "life_slice_ship_search"
-version = "3.8.0"
+version = "3.7.3"
 authors = ["Andrew Wade <ajwade@protonmail.com>"]
 edition = "2018"
 
diff --git a/search.sh b/search.sh
index 820af31..bf63e78 100755
--- a/search.sh
+++ b/search.sh
@@ -111,7 +111,7 @@ then
         --out_dir $data/0010/00
     fi
 
-    for s in `seq -w 1 99`
+    for s in `seq -w 1 29`
     do
         mkdir $data/0010/$s
         if [ $s -eq $seedcolumn ]
@@ -181,7 +181,7 @@ do
             rmdir $data/$prevlvl/00
         fi
         prevslice=00
-        for slice in `seq -w 01 98`
+        for slice in `seq -w 01 28`
         do
             if [ "$token" = "$lvl/$prevslice" ]
             then
@@ -239,13 +239,13 @@ do
             fi
             prevslice=$slice
         done
-        if [ "$token" = "$lvl/98" ]
+        if [ "$token" = "$lvl/28" ]
         then
             echo $token
-            mkdir $data/$lvl/99
+            mkdir $data/$lvl/29
             $lsss join $parms ${threads:+--threads ${threads}} \
-                --in_left $data/$lvl/98 --in_right $data/$prevlvl/99 \
-                --out_right $data/$lvl/99 \
+                --in_left $data/$lvl/28 --in_right $data/$prevlvl/29 \
+                --out_right $data/$lvl/29 \
                 --right_rows $lvl \
                 --right_sort right \
                 --flush_right_after $flush \
@@ -264,17 +264,17 @@ do
 
             echo > $data/${lvl}.partial.txt
 
-            mkdir $data/$lvl/98p
+            mkdir $data/$lvl/28p
             $lsss join $parms --partial \
-                --in_left $data/$lvl/98 --in_right $data/$lvl/99 \
-                --out_left $data/$lvl/98p \
+                --in_left $data/$lvl/28 --in_right $data/$lvl/29 \
+                --out_left $data/$lvl/28p \
                 --left_rows $lvl \
                 --left_sort right \
                 --flush_left_after $flush \
                 >> $data/${lvl}.partial.txt
 
-            prevslice=98
-            for slice in `seq -w 97 -1 0`
+            prevslice=28
+            for slice in `seq -w 27 -1 0`
             do
                 mkdir $data/$lvl/${slice}p
                 $lsss join $parms --partial \
@@ -294,15 +294,15 @@ do
             rm $data/$lvl/00p/*.slice
             rmdir $data/$lvl/00p
 
-            if [ `$lsss info --min_distance $parms --in_left $data/$lvl/98` -eq 0 ]
+            if [ `$lsss info --min_distance $parms --in_left $data/$lvl/28` -eq 0 ]
             then
                 echo "Potential Spaceship found, check latest partial!"
             fi
 
             token=$lvl/done
             echo $token > $data/token || exit 1
-            rm $data/$prevlvl/99/*.slice
-            rmdir $data/$prevlvl/99
+            rm $data/$prevlvl/29/*.slice
+            rmdir $data/$prevlvl/29
             rmdir $data/$prevlvl
         fi
         pass=left
@@ -312,10 +312,10 @@ do
             echo $token
             test $lvl -le `cat $data/stopafter` || exit
             mkdir $data/$lvl
-            mkdir $data/$lvl/99
+            mkdir $data/$lvl/29
             $lsss join $parms ${threads:+--threads ${threads}} \
-                --in_left $data/$prevlvl/98 --in_right $data/$prevlvl/99 \
-                --out_right $data/$lvl/99 \
+                --in_left $data/$prevlvl/28 --in_right $data/$prevlvl/29 \
+                --out_right $data/$lvl/29 \
                 --right_rows $lvl \
                 --right_sort right \
                 --flush_right_after $flush \
@@ -323,19 +323,19 @@ do
                 --max_width $max_width \
                 --zero || exit 1
 
-            if [ ! -e $data/$lvl/99/r_000.slice ]
+            if [ ! -e $data/$lvl/29/r_000.slice ]
             then
                 echo "No spaceship found for seedcolumn $seedcolumn"
                 exit 2
             fi
 
-            token=$lvl/99
+            token=$lvl/29
             echo $token > $data/token
-            rm $data/$prevlvl/99/*.slice
-            rmdir $data/$prevlvl/99
+            rm $data/$prevlvl/29/*.slice
+            rmdir $data/$prevlvl/29
         fi
-        prevslice=99
-        for slice in `seq -w 98 -1 1`
+        prevslice=29
+        for slice in `seq -w 28 -1 1`
         do
             if [ "$token" = "$lvl/$prevslice" ]
             then
@@ -437,7 +437,7 @@ do
                     >> $data/${lvl}.partial.txt
 
                 prevslice=00
-                for slice in `seq -w 1 99`
+                for slice in `seq -w 1 29`
                 do
                     mkdir $data/$lvl/${slice}p
                     $lsss join $parms --partial \
@@ -454,8 +454,8 @@ do
                     prevslice=$slice
                 done
 
-                rm $data/$lvl/99p/*.slice
-                rmdir $data/$lvl/99p
+                rm $data/$lvl/29p/*.slice
+                rmdir $data/$lvl/29p
 
             fi
 
diff --git a/src/workspace.rs b/src/workspace.rs
index 581817d..a03a450 100644
--- a/src/workspace.rs
+++ b/src/workspace.rs
@@ -609,8 +609,8 @@ impl<'a> Workspace<'a> {
             node[tp].ahead |= 0xf0;
             node[tp].ahead &= cells_ahead;
             if ahead_rows == 1 {
-                node[tp].child &= 0x0f;
-                node[tp].child |= cells_ahead & 0xf0;
+                node[tp].child |= 0xf0;
+                node[tp].child &= cells_ahead;
             } else if sp >= ahead_rows {
                 node[tp].child &= 0x0f;
                 node[tp].child |= lvl[sp + 1 - ahead_rows].node.ahead & 0xf0;
So, some directory names seems to have been altered. I reverted the changes in search.sh by going back to the 3.7.3 version of that file and this seems to fix the problem for now.

@LaundryPizza03 : Try checking out 3.7.3, but test if the change in workspace.rs needs to be applied for your searches
Frank Everdij

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

Re: A new spaceship search approach

Post by LaundryPizza03 » April 9th, 2022, 10:40 pm

dexter1 wrote:
March 31st, 2022, 6:17 am
AforAmpere wrote:
March 29th, 2022, 11:00 pm
I was having a similar issue of LSSS just stopping at depth 11 on everything on the newest version. The version where the threads parameter was changed works for me.
I experienced this as well. The previous version worked for me so i made a git diff of the current and previous version in the main branch:

Code: Select all

diff --git a/Cargo.toml b/Cargo.toml
index c9457b3..8f8391f 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "life_slice_ship_search"
-version = "3.8.0"
+version = "3.7.3"
 authors = ["Andrew Wade <ajwade@protonmail.com>"]
 edition = "2018"
 
diff --git a/search.sh b/search.sh
index 820af31..bf63e78 100755
--- a/search.sh
+++ b/search.sh
@@ -111,7 +111,7 @@ then
         --out_dir $data/0010/00
     fi
 
-    for s in `seq -w 1 99`
+    for s in `seq -w 1 29`
     do
         mkdir $data/0010/$s
         if [ $s -eq $seedcolumn ]
@@ -181,7 +181,7 @@ do
             rmdir $data/$prevlvl/00
         fi
         prevslice=00
-        for slice in `seq -w 01 98`
+        for slice in `seq -w 01 28`
         do
             if [ "$token" = "$lvl/$prevslice" ]
             then
@@ -239,13 +239,13 @@ do
             fi
             prevslice=$slice
         done
-        if [ "$token" = "$lvl/98" ]
+        if [ "$token" = "$lvl/28" ]
         then
             echo $token
-            mkdir $data/$lvl/99
+            mkdir $data/$lvl/29
             $lsss join $parms ${threads:+--threads ${threads}} \
-                --in_left $data/$lvl/98 --in_right $data/$prevlvl/99 \
-                --out_right $data/$lvl/99 \
+                --in_left $data/$lvl/28 --in_right $data/$prevlvl/29 \
+                --out_right $data/$lvl/29 \
                 --right_rows $lvl \
                 --right_sort right \
                 --flush_right_after $flush \
@@ -264,17 +264,17 @@ do
 
             echo > $data/${lvl}.partial.txt
 
-            mkdir $data/$lvl/98p
+            mkdir $data/$lvl/28p
             $lsss join $parms --partial \
-                --in_left $data/$lvl/98 --in_right $data/$lvl/99 \
-                --out_left $data/$lvl/98p \
+                --in_left $data/$lvl/28 --in_right $data/$lvl/29 \
+                --out_left $data/$lvl/28p \
                 --left_rows $lvl \
                 --left_sort right \
                 --flush_left_after $flush \
                 >> $data/${lvl}.partial.txt
 
-            prevslice=98
-            for slice in `seq -w 97 -1 0`
+            prevslice=28
+            for slice in `seq -w 27 -1 0`
             do
                 mkdir $data/$lvl/${slice}p
                 $lsss join $parms --partial \
@@ -294,15 +294,15 @@ do
             rm $data/$lvl/00p/*.slice
             rmdir $data/$lvl/00p
 
-            if [ `$lsss info --min_distance $parms --in_left $data/$lvl/98` -eq 0 ]
+            if [ `$lsss info --min_distance $parms --in_left $data/$lvl/28` -eq 0 ]
             then
                 echo "Potential Spaceship found, check latest partial!"
             fi
 
             token=$lvl/done
             echo $token > $data/token || exit 1
-            rm $data/$prevlvl/99/*.slice
-            rmdir $data/$prevlvl/99
+            rm $data/$prevlvl/29/*.slice
+            rmdir $data/$prevlvl/29
             rmdir $data/$prevlvl
         fi
         pass=left
@@ -312,10 +312,10 @@ do
             echo $token
             test $lvl -le `cat $data/stopafter` || exit
             mkdir $data/$lvl
-            mkdir $data/$lvl/99
+            mkdir $data/$lvl/29
             $lsss join $parms ${threads:+--threads ${threads}} \
-                --in_left $data/$prevlvl/98 --in_right $data/$prevlvl/99 \
-                --out_right $data/$lvl/99 \
+                --in_left $data/$prevlvl/28 --in_right $data/$prevlvl/29 \
+                --out_right $data/$lvl/29 \
                 --right_rows $lvl \
                 --right_sort right \
                 --flush_right_after $flush \
@@ -323,19 +323,19 @@ do
                 --max_width $max_width \
                 --zero || exit 1
 
-            if [ ! -e $data/$lvl/99/r_000.slice ]
+            if [ ! -e $data/$lvl/29/r_000.slice ]
             then
                 echo "No spaceship found for seedcolumn $seedcolumn"
                 exit 2
             fi
 
-            token=$lvl/99
+            token=$lvl/29
             echo $token > $data/token
-            rm $data/$prevlvl/99/*.slice
-            rmdir $data/$prevlvl/99
+            rm $data/$prevlvl/29/*.slice
+            rmdir $data/$prevlvl/29
         fi
-        prevslice=99
-        for slice in `seq -w 98 -1 1`
+        prevslice=29
+        for slice in `seq -w 28 -1 1`
         do
             if [ "$token" = "$lvl/$prevslice" ]
             then
@@ -437,7 +437,7 @@ do
                     >> $data/${lvl}.partial.txt
 
                 prevslice=00
-                for slice in `seq -w 1 99`
+                for slice in `seq -w 1 29`
                 do
                     mkdir $data/$lvl/${slice}p
                     $lsss join $parms --partial \
@@ -454,8 +454,8 @@ do
                     prevslice=$slice
                 done
 
-                rm $data/$lvl/99p/*.slice
-                rmdir $data/$lvl/99p
+                rm $data/$lvl/29p/*.slice
+                rmdir $data/$lvl/29p
 
             fi
 
diff --git a/src/workspace.rs b/src/workspace.rs
index 581817d..a03a450 100644
--- a/src/workspace.rs
+++ b/src/workspace.rs
@@ -609,8 +609,8 @@ impl<'a> Workspace<'a> {
             node[tp].ahead |= 0xf0;
             node[tp].ahead &= cells_ahead;
             if ahead_rows == 1 {
-                node[tp].child &= 0x0f;
-                node[tp].child |= cells_ahead & 0xf0;
+                node[tp].child |= 0xf0;
+                node[tp].child &= cells_ahead;
             } else if sp >= ahead_rows {
                 node[tp].child &= 0x0f;
                 node[tp].child |= lvl[sp + 1 - ahead_rows].node.ahead & 0xf0;
So, some directory names seems to have been altered. I reverted the changes in search.sh by going back to the 3.7.3 version of that file and this seems to fix the problem for now.

@LaundryPizza03 : Try checking out 3.7.3, but test if the change in workspace.rs needs to be applied for your searches
Done. Seems to be working now.

Code: Select all

git checkout f6592ce8

Code: Select all

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

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

Re: A new spaceship search approach

Post by LaundryPizza03 » June 1st, 2022, 7:05 am

I was testing the newest version of LSSS, and in B3/S23 with speed (1,0)c/2, margin 10, gutter symmetry, and seedcolumn 01, it endlessly prints out 70P2H1V0.1 after depth 0027. The subsequent rows are blank. Search parameters that yield no spaceships seem to run normally.

Code: Select all

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

User avatar
dexter1
Posts: 71
Joined: February 26th, 2020, 8:46 am

Re: A new spaceship search approach

Post by dexter1 » June 5th, 2022, 7:24 am

LaundryPizza03 wrote:
June 1st, 2022, 7:05 am
I was testing the newest version of LSSS, and in B3/S23 with speed (1,0)c/2, margin 10, gutter symmetry, and seedcolumn 01, it endlessly prints out 70P2H1V0.1 after depth 0027. The subsequent rows are blank. Search parameters that yield no spaceships seem to run normally.
Since december of last year Andrew inplemented support for spaceship detection in the script, although it might not work on some occasions, this i've noticed myself.
If you find a ship at a certain margin, gutter and seed combination, that's about it. The script doesn't skip the seed or exit all together, it just prints out a "possible spaceship" notification and will just continue until you run out of disk space.

But if you don't want to find the same ship, you can exclude patterns for that search combination.
Frank Everdij

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

Re: A new spaceship search approach

Post by May13 » August 3rd, 2022, 8:43 am

I have a problem with compiling the latest version of LSSS: (see Edit)

Code: Select all

$ RUSTFLAGS='-C target-cpu=native' cargo build --release
    Updating crates.io index
  Downloaded regex v1.6.0
  Downloaded regex-syntax v0.6.27
  Downloaded 2 crates (536.6 KB) in 3.20s
   Compiling memchr v2.5.0
   Compiling unicode-width v0.1.9
   Compiling regex-syntax v0.6.27
   Compiling num_cpus v1.13.1
   Compiling std-semaphore v0.1.0
   Compiling getopts v0.2.21
   Compiling aho-corasick v0.7.18
   Compiling regex v1.6.0
   Compiling life_slice_ship_search v3.8.1 (D:\BASH\cygwin64\home\User\C\LSSSaug)
error[E0658]: use of unstable library feature 'bufreader_seek_relative'
   --> src\chunkio.rs:201:18
    |
201 |                 .seek_relative(self.current_offset as i64 - self.reader_offset as i64)?;
    |                  ^^^^^^^^^^^^^
    |
    = note: see issue #31100 <https://github.com/rust-lang/rust/issues/31100> for more information

error: aborting due to previous error

For more information about this error, try `rustc --explain E0658`.
error: could not compile `life_slice_ship_search`

To learn more, run the command again with --verbose.

Edit: never mind, updated rust works:

Code: Select all

$ RUSTFLAGS='-C target-cpu=native' cargo build --release
    Updating crates.io index
  Downloaded aho-corasick v0.7.18
  Downloaded getopts v0.2.21
  Downloaded unicode-width v0.1.9
  Downloaded memchr v2.5.0
  Downloaded regex v1.6.0
  Downloaded num_cpus v1.13.1
  Downloaded std-semaphore v0.1.0
  Downloaded regex-syntax v0.6.27
  Downloaded 8 crates (768.8 KB) in 2.82s
   Compiling memchr v2.5.0
   Compiling unicode-width v0.1.9
   Compiling regex-syntax v0.6.27
   Compiling num_cpus v1.13.1
   Compiling std-semaphore v0.1.0
   Compiling getopts v0.2.21
   Compiling aho-corasick v0.7.18
   Compiling regex v1.6.0
   Compiling life_slice_ship_search v3.8.1 (D:\BASH\cygwin64\home\User\C\LSSSaug)
    Finished release [optimized + debuginfo] target(s) in 2m 02s
The latest version of hex-gliders.db have 668 gliders from OT hexagonal rules. Let's find more!
My CA (13 rules)
My scripts: new-glider.py v0.2 (new version), nbsearch2a.py, collector.py v0.3

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

Re: A new spaceship search approach

Post by May13 » November 11th, 2022, 9:45 am

May13 wrote:
February 2nd, 2022, 6:40 am
While searching for 2c/3 spaceship in B267/S34, I got message about potential spaceship, but I found no spaceship in file.
I have a similar issue in B2568/S0458. Search configuration:

Code: Select all

#!/bin/bash

lsss=target/release/life_slice_ship_search

# Set data variable to an empty directory with plenty of space for
# storing slices.
# To interrupt the search "echo 0000 > data/stopafter",
# and the script will exit after some time.
# To resume the search "echo 9000 > data/stopafter",
# and run this script. It will resume from where it was stopped.
# Partial results will be saved in the data directory.
# The partials will need to be mirrored.

data=data

margin=17

#midline=--even_midline
midline=--odd_midline
#midline=--gutter
#midline=--zero # use for Asymmetric, add 1 to margin.

parms="--velocity (2,0)c/3 --rule B2568/S0458"

# For an exhaustive search re-run the search with seedcolumn changed to all
# the values from 00 to the margin.
# Note however that if a spaceship is found it will not be possible to
# continue the search for that seed as the disk space will blow up.

seedcolumn=00

declare -a exclude

# The exclude parameter can be used to exclude results that are not wanted.
# This could be useful for excluding repeating patterns or lower-period
# spaceships. It is a manual process.

# Usage:
#
# 1. Find the partial that contains the pattern to exclude.
# 2. Pick a slice (two columns) near the middle of the pattern.
# 3. Trim off excess from the tail of the pattern.
# 4. Pass the two columns to --exclude separated by a /. The "left" column
#    goes first.
#
# Notes:
#
# * Trailing spaces in the exclude pattern are significant.
#
# * The results in the partial files are rotated and sometimes flipped. So the
#   left column (that goes first) is the lower row in the odd-numbered
#   partials and the higher row in the even-numbered partials.
#
# * The amount of information to specify what to exclude is fairly limited
#   (Two columns of the pattern for one phase.) To avoid excluding more
#   patterns you do not intend to do not be aggressive in trimming the
#   tail.

#exclude+=(--exclude)
#exclude+=(" **   **    *** ***  ***          *   **               **        ****          **     **        *  *     ****   * /  *    ****   **        *   * *          **  *         *         *  *  * **     *               *  *   *    **** *")


grey_start_row=00
grey_end_row=00
grey_margin=02

flush=4000000000
mem=4000000000
threads=
max_width=100

if [ ! -e $data/token ]
then
    echo init >> $data/token
    echo 9000 > $data/stopafter
fi

read token < $data/token

if [ "$token" = "init" ]
then
    mkdir $data/0010
    mkdir $data/0010/00

    if [ $seedcolumn -eq 0 ]
    then
        case $midline in
            --even_midline)
                seed=89;;
            --odd_midline)
                seed=ef;;
            --gutter)
                seed=23;; # search will fail immediately.
            --zero)
                seed=21;; # search will fail immediately.
        esac
        $lsss init $parms --seed $seed --slice_rows 10 --sort left \
        --out_dir $data/0010/00
    else
        case $midline in
            --even_midline)
                seed=19;;
            --odd_midline)
                seed=1f;;
            --gutter)
                seed=13;;
            --zero)
                seed=11;;
        esac
        $lsss init $parms --seed $seed --slice_rows 10 --sort left \
        --out_dir $data/0010/00
    fi

    for s in `seq -w 1 29`
    do
        mkdir $data/0010/$s
        if [ $s -eq $seedcolumn ]
        then
            $lsss init $parms --seed 2f --slice_rows 10 \
            --sort right --out_dir $data/0010/$s
        else
            if [ $s -gt $margin ]
            then
                $lsss init $parms --seed 11 --slice_rows 10 \
                --sort right --out_dir $data/0010/$s
            else
               if [ $s -lt $seedcolumn ]
               then
                  $lsss init $parms --seed 1f --slice_rows 10 \
                   --sort right --out_dir $data/0010/$s
               else
                  $lsss init $parms --seed ff --slice_rows 10 \
                   --sort right --out_dir $data/0010/$s
               fi
            fi
        fi
    done
    token=0010/done
    echo $token > $data/token || exit 1
fi

pass=right
prevlvl=0010
for lvl in `seq -w 11 9999`
do
    test $lvl -le `cat $data/stopafter` || exit
    if [ $pass = right ]
    then
        if [ "$token" = "$prevlvl/done" ]
        then
            date >> $data/search.log
            du $data/ >> $data/search.log
            echo $token
            test $lvl -le `cat $data/stopafter` || exit
            mkdir $data/$lvl
            mkdir $data/$lvl/00
            $lsss join $parms ${threads:+--threads ${threads}} \
                --in_left $data/$prevlvl/00 --in_right $data/$prevlvl/01 \
                --out_left $data/$lvl/00 \
                --left_rows $lvl \
                --left_sort left \
                --flush_left_after $flush \
                --mem $mem \
                --max_width $max_width \
                "${exclude[@]}" \
                $midline || exit 1


            if [ ! -e $data/$lvl/00/l_000.slice ]
            then
                echo "No spaceship found for seedcolumn $seedcolumn"
                exit 2
            fi
            echo -n $lvl,00, >> $data/slice_counts.csv
            echo `$lsss info --slice_count --in_left $data/$lvl/00` \
                >> $data/slice_counts.csv

            token=$lvl/00
            echo $token > $data/token || exit 1
            rm $data/$prevlvl/00/*.slice
            rmdir $data/$prevlvl/00
        fi
        prevslice=00
        for slice in `seq -w 01 28`
        do
            if [ "$token" = "$lvl/$prevslice" ]
            then
                echo $token
                test $lvl -le `cat $data/stopafter` || exit
                mkdir $data/$lvl/$slice
                if [ $slice -gt $margin ]
                then
                    zero="--zero"
                else
                    zero=
                fi

                if [ $lvl -ge $grey_start_row \
                    -a $lvl -lt $grey_end_row \
                    -a $slice -le $grey_margin ]
                then
                    if [ $((slice % 2)) -eq 0 ]
                    then
                        extend_mask="--extend_mask=2"
                    else
                        extend_mask="--extend_mask=4"
                    fi
                else
                    extend_mask=
                fi

                $lsss join $parms ${threads:+--threads ${threads}} \
                    --in_left $data/$lvl/$prevslice \
                    --in_right $data/$prevlvl/$slice \
                    --out_right $data/$lvl/$slice \
                    --right_rows $lvl \
                    --right_sort left \
                    --flush_right_after $flush \
                    --mem $mem \
                    --max_width $max_width \
                    "${exclude[@]}" \
                    $extend_mask \
                    $zero || exit 1

                if [ ! -e $data/$lvl/$slice/l_000.slice ]
                then
                    echo "No spaceship found for seedcolumn $seedcolumn"
                    exit 2
                fi

                echo -n $lvl,$slice, >> $data/slice_counts.csv
                echo `$lsss info --slice_count --in_left $data/$lvl/$slice` \
                    >> $data/slice_counts.csv

                token=$lvl/$slice
                echo $token > $data/token || exit 1
                rm $data/$prevlvl/$slice/*.slice
                rmdir $data/$prevlvl/$slice
            fi
            prevslice=$slice
        done
        if [ "$token" = "$lvl/28" ]
        then
            echo $token
            mkdir $data/$lvl/29
            $lsss join $parms ${threads:+--threads ${threads}} \
                --in_left $data/$lvl/28 --in_right $data/$prevlvl/29 \
                --out_right $data/$lvl/29 \
                --right_rows $lvl \
                --right_sort right \
                --flush_right_after $flush \
                --mem $mem \
                --max_width $max_width \
                --zero || exit 1

            if [ ! -e $data/$lvl/29/r_000.slice ]
            then
                echo "No spaceship found for seedcolumn $seedcolumn"
                exit 2
            fi

            date >> $data/search.log
            du $data/ >> $data/search.log

            echo > $data/${lvl}.partial.txt

            mkdir $data/$lvl/28p
            $lsss join $parms --partial \
                --in_left $data/$lvl/28 --in_right $data/$lvl/29 \
                --out_left $data/$lvl/28p \
                --left_rows $lvl \
                --left_sort right \
                --flush_left_after $flush \
                >> $data/${lvl}.partial.txt

            prevslice=28
            for slice in `seq -w 27 -1 0`
            do
                mkdir $data/$lvl/${slice}p
                $lsss join $parms --partial \
                    --in_left $data/$lvl/$slice \
                    --in_right $data/$lvl/${prevslice}p \
                    --out_left $data/$lvl/${slice}p \
                    --left_rows $lvl \
                    --left_sort right \
                    --flush_left_after $flush \
                    >> $data/${lvl}.partial.txt

                rm $data/$lvl/${prevslice}p/*.slice
                rmdir $data/$lvl/${prevslice}p
                prevslice=$slice
            done

            rm $data/$lvl/00p/*.slice
            rmdir $data/$lvl/00p

            if [ `$lsss info --min_distance $parms --in_left $data/$lvl/28` -eq 0 ]
            then
                echo "Potential Spaceship found, check latest partial!"
            fi

            token=$lvl/done
            echo $token > $data/token || exit 1
            rm $data/$prevlvl/29/*.slice
            rmdir $data/$prevlvl/29
            rmdir $data/$prevlvl
        fi
        pass=left
    else
        if [ "$token" = "$prevlvl/done" ]
        then
            echo $token
            test $lvl -le `cat $data/stopafter` || exit
            mkdir $data/$lvl
            mkdir $data/$lvl/29
            $lsss join $parms ${threads:+--threads ${threads}} \
                --in_left $data/$prevlvl/28 --in_right $data/$prevlvl/29 \
                --out_right $data/$lvl/29 \
                --right_rows $lvl \
                --right_sort right \
                --flush_right_after $flush \
                --mem $mem \
                --max_width $max_width \
                --zero || exit 1

            if [ ! -e $data/$lvl/29/r_000.slice ]
            then
                echo "No spaceship found for seedcolumn $seedcolumn"
                exit 2
            fi

            token=$lvl/29
            echo $token > $data/token
            rm $data/$prevlvl/29/*.slice
            rmdir $data/$prevlvl/29
        fi
        prevslice=29
        for slice in `seq -w 28 -1 1`
        do
            if [ "$token" = "$lvl/$prevslice" ]
            then
                echo $token
                test $lvl -le `cat $data/stopafter` || exit
                mkdir $data/$lvl/$slice
                if [ $slice -gt $margin ]
                then
                    zero="--zero"
                else
                    zero=
                fi

                if [ $lvl -ge $grey_start_row \
                    -a $lvl -lt $grey_end_row \
                    -a $slice -le $grey_margin ]
                then
                    if [ $((slice % 2)) -eq 0 ]
                    then
                        extend_mask="--extend_mask=2"
                    else
                        extend_mask="--extend_mask=4"
                    fi
                else
                    extend_mask=
                fi

                $lsss join $parms ${threads:+--threads ${threads}} \
                    --in_left $data/$prevlvl/$slice \
                    --in_right $data/$lvl/$prevslice \
                    --out_left $data/$lvl/$slice \
                    --left_rows $lvl \
                    --left_sort right \
                    --flush_left_after $flush \
                    --mem $mem \
                    --max_width $max_width \
                    "${exclude[@]}" \
                    $extend_mask \
                    $zero || exit 1

                if [ ! -e $data/$lvl/$slice/r_000.slice ]
                then
                    echo "No spaceship found for seedcolumn $seedcolumn"
                    exit 2
                fi

                echo -n $lvl,$slice, >> $data/slice_counts.csv
                echo `$lsss info --slice_count --in_right $data/$lvl/$slice` \
                    >> $data/slice_counts.csv

                token=$lvl/$slice
                echo $token > $data/token || exit 1
                rm $data/$prevlvl/$slice/*.slice
                rmdir $data/$prevlvl/$slice
            fi
            prevslice=$slice
        done
        if [ "$token" = "$lvl/01" ]
        then
            echo $token
            mkdir $data/$lvl/00

            $lsss join $parms ${threads:+--threads ${threads}} \
                --in_left $data/$prevlvl/00 --in_right $data/$lvl/01 \
                --out_left $data/$lvl/00 \
                --left_rows $lvl \
                --left_sort left \
                --flush_left_after $flush \
                --mem $mem \
                --max_width $max_width \
                "${exclude[@]}" \
                $midline || exit 1

            if [ ! -e $data/$lvl/00/l_000.slice ]
            then
                echo "No spaceship found for seedcolumn $seedcolumn"
                exit 2
            fi

            echo -n $lvl,00, >> $data/slice_counts.csv
            echo `$lsss info --slice_count --in_left $data/$lvl/00` \
                >> $data/slice_counts.csv

            if [ `$lsss info --slice_count --in_left $data/$lvl/00` -eq 1 ]
            then
                # for an asymmetric midline the 0 column has only one
                # slice so we can calculate the partial from the center
                # out as well.

                echo > $data/${lvl}.partial.txt

                mkdir $data/$lvl/00p
                $lsss join $parms --partial \
                    --in_left $data/$lvl/00 --in_right $data/$lvl/01 \
                    --out_left $data/$lvl/00p \
                    --left_rows $lvl \
                    --left_sort left \
                    --flush_left_after $flush \
                    >> $data/${lvl}.partial.txt

                prevslice=00
                for slice in `seq -w 1 29`
                do
                    mkdir $data/$lvl/${slice}p
                    $lsss join $parms --partial \
                        --in_left $data/$lvl/${prevslice}p \
                        --in_right $data/$lvl/$slice \
                        --out_right $data/$lvl/${slice}p \
                        --right_rows $lvl \
                        --right_sort left \
                        --flush_right_after $flush \
                        >> $data/${lvl}.partial.txt

                    rm $data/$lvl/${prevslice}p/*.slice
                    rmdir $data/$lvl/${prevslice}p
                    prevslice=$slice
                done

                rm $data/$lvl/29p/*.slice
                rmdir $data/$lvl/29p

            fi

            token=$lvl/done
            echo $token > $data/token || exit 1
            rm $data/$prevlvl/00/*.slice
            rmdir $data/$prevlvl/00
            rmdir $data/$prevlvl
        fi


        pass=right
    fi
    prevlvl=$lvl
done
It's annoying that due to both wickstretcher and false spaceship report I can't get anything other than these 3 patterns (without manual exclusion of wickstretcher):

Code: Select all

x = 90, y = 153, rule = B2568/S0458
27bo41bo4bo$3bo13bobo4bo2b2o2bo36b2ob3o$11bo4bo5b2o2bo2b2o2bo11bo22bo
5b2o$2bo5bo9bo2b3o3bo2bo7bo3bo5bo6bo14bobobo$4bo9b2ob2o2b3o3bob2o6b2ob
2obo10bo6b5o8bo$bo4b2o3b2o8bo2b2o2b3obob2o8bo4bo5b2o4b5o9b2o2bo4bo4bo$
4bo3bob2o3b2o2b2o7b2o2b3o2bo2bobo2bo5bo2b2o2b3o4b3o10bob5o2bobo$2bo8bo
2bo2bo2bob2o2bo6b3o4bo6bo3bo2b2obo4bo16b4ob2o$10b2o11b2obo2b3ob11obo4b
o6b2obo2bo2b4obob4o6b3o3bo$3bo6b2o3bob2o3b2o5bobobo2bob2obob2obo8bo4bo
2bob2obobo2bobo9bo$10bob3o5bo4bobob2ob2ob2ob2ob5o10bob2o3bo5bo4bob8obo
$12bo2bo13bo2bo4b2o9b2ob2obo15bo3b3ob5o2bo$2bo8b5o15b3obo2b2o2b3o10bob
3obo11bo10bobo$b2o10bo16b2obo3bo10bo2bobo10bobo2bo2b2obobo6bo$b2o4bo2b
2obo3bo11b2o2bo5b3ob2o6bo13bo2b2obobo8bobo$6ob4o17bobo2bob4ob3o2bo2bo
2bo2bo6b2o6b2o2bo10bo$ob2o5bo19b2o5b2o2b2ob3obo3bob2o6bo2b3o2bob3o7bo
2bo$6ob4o17bobo2bob4ob3o2bo2bo2bo2bo6b2o6b2o2bo10bo$b2o4bo2b2obo3bo11b
2o2bo5b3ob2o6bo13bo2b2obobo8bobo$b2o10bo16b2obo3bo10bo2bobo10bobo2bo2b
2obobo6bo$2bo8b5o15b3obo2b2o2b3o10bob3obo11bo10bobo$12bo2bo13bo2bo4b2o
9b2ob2obo15bo3b3ob5o2bo$10bob3o5bo4bobob2ob2ob2ob2ob5o10bob2o3bo5bo4bo
b8obo$3bo6b2o3bob2o3b2o5bobobo2bob2obob2obo8bo4bo2bob2obobo2bobo9bo$
10b2o11b2obo2b3ob11obo4bo6b2obo2bo2b4obob4o6b3o3bo$2bo8bo2bo2bo2bob2o
2bo6b3o4bo6bo3bo2b2obo4bo16b4ob2o$4bo3bob2o3b2o2b2o7b2o2b3o2bo2bobo2bo
5bo2b2o2b3o4b3o10bob5o2bobo$bo4b2o3b2o8bo2b2o2b3obob2o8bo4bo5b2o4b5o9b
2o2bo4bo4bo$4bo9b2ob2o2b3o3bob2o6b2ob2obo10bo6b5o8bo$2bo5bo9bo2b3o3bo
2bo7bo3bo5bo6bo14bobobo$11bo4bo5b2o2bo2b2o2bo11bo22bo5b2o$3bo13bobo4bo
2b2o2bo36b2ob3o$27bo41bo4bo28$27bo41bo4bo$3bo13bobo4bo2b2o2bo36b2ob3o$
11bo4bo5b2o2bo2b2o2bo11bo22bo5b2o$2bo5bo9bo2b3o3bo2bo7bo3bo5bo6bo14bob
obo$4bo9b2ob2o2b3o3bob2o6b2ob2obo10bo6b5o8bo$bo4b2o3b2o8bo2b2o2b3obob
2o8bo4bo5b2o4b5o9b2o2bo9bo$4bo3bob2o3b2o2b2o7b2o2b3o2bo2bobo2bo5bo2b2o
2b3o4b3o10bob5o$2bo8bo2bo2bo2bob2o2bo6b3o4bo6bo3bo2b2obo4bo16b9obo$10b
2o11b2obo2b3ob11obo4bo6b2obo2bo2b4obob4o7bo3bo$3bo6b2o3bob2o3b2o5bobob
o2bob2obob2obo8bo4bo2bob2obobo2bobo8bo$10bob3o5bo4bobob2ob2ob2ob2ob5o
10bob2o3bo5bo4bob8o$12bo2bo13bo2bo4b2o9b2ob2obo15bo3b3ob5obo$2bo8b5o
15b3obo2b2o2b3o10bob3obo11bo11bo$b2o10bo16b2obo3bo10bo2bobo10bobo2bo2b
2obobo5b3o$b2o4bo2b2obo3bo11b2o2bo5b3ob2o6bo13bo2b2obobo11bo$6ob4o17bo
bo2bob4ob3o2bo2bo2bo2bo6b2o6b2o2bo8bo2bo$ob2o5bo19b2o5b2o2b2ob3obo3bob
2o6bo2b3o2bob3o9b3o$6ob4o17bobo2bob4ob3o2bo2bo2bo2bo6b2o6b2o2bo8bo2bo$
b2o4bo2b2obo3bo11b2o2bo5b3ob2o6bo13bo2b2obobo11bo$b2o10bo16b2obo3bo10b
o2bobo10bobo2bo2b2obobo5b3o$2bo8b5o15b3obo2b2o2b3o10bob3obo11bo11bo$
12bo2bo13bo2bo4b2o9b2ob2obo15bo3b3ob5obo$10bob3o5bo4bobob2ob2ob2ob2ob
5o10bob2o3bo5bo4bob8o$3bo6b2o3bob2o3b2o5bobobo2bob2obob2obo8bo4bo2bob
2obobo2bobo8bo$10b2o11b2obo2b3ob11obo4bo6b2obo2bo2b4obob4o7bo3bo$2bo8b
o2bo2bo2bob2o2bo6b3o4bo6bo3bo2b2obo4bo16b9obo$4bo3bob2o3b2o2b2o7b2o2b
3o2bo2bobo2bo5bo2b2o2b3o4b3o10bob5o$bo4b2o3b2o8bo2b2o2b3obob2o8bo4bo5b
2o4b5o9b2o2bo9bo$4bo9b2ob2o2b3o3bob2o6b2ob2obo10bo6b5o8bo$2bo5bo9bo2b
3o3bo2bo7bo3bo5bo6bo14bobobo$11bo4bo5b2o2bo2b2o2bo11bo22bo5b2o$3bo13bo
bo4bo2b2o2bo36b2ob3o$27bo41bo4bo28$27bo41bo4bo$3bo13bobo4bo2b2o2bo36b
2ob3o$11bo4bo5b2o2bo2b2o2bo11bo22bo5b2o$2bo5bo9bo2b3o3bo2bo7bo3bo5bo6b
o14bobobo$4bo9b2ob2o2b3o3bob2o6b2ob2obo10bo6b5o8bo$bo4b2o3b2o8bo2b2o2b
3obob2o8bo4bo5b2o4b5o9b2o2bo7bo$4bo3bob2o3b2o2b2o7b2o2b3o2bo2bobo2bo5b
o2b2o2b3o4b3o10bob7ob2o$2bo8bo2bo2bo2bob2o2bo6b3o4bo6bo3bo2b2obo4bo16b
6o2bo$10b2o11b2obo2b3ob11obo4bo6b2obo2bo2b4obob4o9b2o$3bo6b2o3bob2o3b
2o5bobobo2bob2obob2obo8bo4bo2bob2obobo2bobo10bo$10bob3o5bo4bobob2ob2ob
2ob2ob5o10bob2o3bo5bo4bob9o$12bo2bo13bo2bo4b2o9b2ob2obo15bo3b3ob7o$2bo
8b5o15b3obo2b2o2b3o10bob3obo11bo10bo$b2o10bo16b2obo3bo10bo2bobo10bobo
2bo2b2obobo$b2o4bo2b2obo3bo11b2o2bo5b3ob2o6bo13bo2b2obobo10bo$6ob4o17b
obo2bob4ob3o2bo2bo2bo2bo6b2o6b2o2bo9b2o$ob2o5bo19b2o5b2o2b2ob3obo3bob
2o6bo2b3o2bob3o9bo$6ob4o17bobo2bob4ob3o2bo2bo2bo2bo6b2o6b2o2bo9b2o$b2o
4bo2b2obo3bo11b2o2bo5b3ob2o6bo13bo2b2obobo10bo$b2o10bo16b2obo3bo10bo2b
obo10bobo2bo2b2obobo$2bo8b5o15b3obo2b2o2b3o10bob3obo11bo10bo$12bo2bo
13bo2bo4b2o9b2ob2obo15bo3b3ob7o$10bob3o5bo4bobob2ob2ob2ob2ob5o10bob2o
3bo5bo4bob9o$3bo6b2o3bob2o3b2o5bobobo2bob2obob2obo8bo4bo2bob2obobo2bob
o10bo$10b2o11b2obo2b3ob11obo4bo6b2obo2bo2b4obob4o9b2o$2bo8bo2bo2bo2bob
2o2bo6b3o4bo6bo3bo2b2obo4bo16b6o2bo$4bo3bob2o3b2o2b2o7b2o2b3o2bo2bobo
2bo5bo2b2o2b3o4b3o10bob7ob2o$bo4b2o3b2o8bo2b2o2b3obob2o8bo4bo5b2o4b5o
9b2o2bo7bo$4bo9b2ob2o2b3o3bob2o6b2ob2obo10bo6b5o8bo$2bo5bo9bo2b3o3bo2b
o7bo3bo5bo6bo14bobobo$11bo4bo5b2o2bo2b2o2bo11bo22bo5b2o$3bo13bobo4bo2b
2o2bo36b2ob3o$27bo41bo4bo!
Edit: an even stranger bug: LSSS stopped reporting about this true spaceship while printing partials 355 and 357, but not 359:

Code: Select all

x = 116, y = 35, rule = B2568/S0458
49bo$36bo9bo2b2o8bo$36b2o2bo2b3o4b2o3bo3b2o3bo$33bo3b3o6bo4b2o3b2o3bo$
8bo17bo3bo7bob2o10bob2o2b3o$7bo25bo4b2o3bobo2b2o2bo6bo2bo5bo2bo$7bo7bo
9bo3bo2b2ob2ob2o4b2obo3bo15bo42bobo$6b4o4bo9bo2b2o11bo9bo2b3o12b5o9bo
2bobo21bo$5bobo4bobo10b2o3bo2bobo3bo3b2o15bo2b4ob2o11bobob2ob18o2b2o$
6b2o7bo4bo2bob2obo2bo3bo3b2o5b2o4bo3bo5b4ob2o8bobobo3b21o$4bo2bo7bo5b
2o6bo2bo5bobo7b2o2b3o9bo2b2o4bo2bo6bobo$5bobo2b2o7b2o4b2obo8bo2bobobob
o6b2ob2o2bo4bo2b2o7bob2o5bo7bo9bo5bo3bo$3bo3b2obo2b4obo6bo13bo2bo12bob
o3bob2obob2o5bob4o3bo4bo2b2o9bobo9bo$2b2o4b2o7b2o8bo3bo2b2o4bo2bobo6b
4ob2o2b2o5b2o3bob2o2bobo2bo8bo3bo3bobo8bobo$b2o5bo5b3o9bobobobo2b3o2bo
3bo7b6o3bo2b2o3bobo13b2o7bo2b2o$b2o11bo2bobobobo5bo5bo2b3o3bo5bo5b2o3b
o2b3o5b2o2bo6bo3bo3b2o3bo2bo$6o2b3ob3o3bo7bob2o2bo6bob2o5b2o3b3o3bob6o
2bo2b2o8b5o5b2o5bo$ob2o4bob2o2b2o2bo2b2o3b3ob3o9bob3o6bo3b3o5bo3bo15b
3o5b2ob2obo$6o2b3ob3o3bo7bob2o2bo6bob2o5b2o3b3o3bob6o2bo2b2o8b5o5b2o5b
o$b2o11bo2bobobobo5bo5bo2b3o3bo5bo5b2o3bo2b3o5b2o2bo6bo3bo3b2o3bo2bo$b
2o5bo5b3o9bobobobo2b3o2bo3bo7b6o3bo2b2o3bobo13b2o7bo2b2o$2b2o4b2o7b2o
8bo3bo2b2o4bo2bobo6b4ob2o2b2o5b2o3bob2o2bobo2bo8bo3bo3bobo8bobo$3bo3b
2obo2b4obo6bo13bo2bo12bobo3bob2obob2o5bob4o3bo4bo2b2o9bobo9bo$5bobo2b
2o7b2o4b2obo8bo2bobobobo6b2ob2o2bo4bo2b2o7bob2o5bo7bo9bo5bo3bo$4bo2bo
7bo5b2o6bo2bo5bobo7b2o2b3o9bo2b2o4bo2bo6bobo$6b2o7bo4bo2bob2obo2bo3bo
3b2o5b2o4bo3bo5b4ob2o8bobobo3b21o$5bobo4bobo10b2o3bo2bobo3bo3b2o15bo2b
4ob2o11bobob2ob18o2b2o$6b4o4bo9bo2b2o11bo9bo2b3o12b5o9bo2bobo21bo$7bo
7bo9bo3bo2b2ob2ob2o4b2obo3bo15bo42bobo$7bo25bo4b2o3bobo2b2o2bo6bo2bo5b
o2bo$8bo17bo3bo7bob2o10bob2o2b3o$33bo3b3o6bo4b2o3b2o3bo$36b2o2bo2b3o4b
2o3bo3b2o3bo$36bo9bo2b2o8bo$49bo!
The latest version of hex-gliders.db have 668 gliders from OT hexagonal rules. Let's find more!
My CA (13 rules)
My scripts: new-glider.py v0.2 (new version), nbsearch2a.py, collector.py v0.3

User avatar
pzq_alex
Posts: 792
Joined: May 1st, 2021, 9:00 pm
Location: tell me if you know

Re: A new spaceship search approach

Post by pzq_alex » November 20th, 2022, 12:10 am

I wonder how well this search approach would work if the width constraint was dropped. From my understanding of the algorithm, this should've be hard to implement. The main issue is whether the number of slices would grow too fast.
\sum_{n=1}^\infty H_n/n^2 = \zeta(3)

How much of current CA technology can I redevelop "on a desert island"?

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

Re: A new spaceship search approach

Post by AforAmpere » September 30th, 2023, 7:09 pm

A search with the following parameters crashed for me:

Code: Select all

margin=14
midline=--odd_midline
parms="--velocity (3,0)c/7 --rule B36/S23"
seedcolumn=03
This message was given, looks like some out of bounds error:

Code: Select all

thread '<unnamed>' panicked at 'index out of bounds: the len is 2379 but the index is 2379', src/compress.rs:58:13
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Any { .. }', src/main.rs:1538:24
If anyone can verify this with their machine, it happened at 0155/11, around 18 hours in (although it would probably be shorter for someone else, I was also running other things.

EDIT, update, I reran this, and it seems fine at 0158/x, so maybe it was some random error on my end.
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.

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

Re: A new spaceship search approach

Post by lordlouckster » December 21st, 2023, 8:32 am

I think LSSS with automatic adaptive widening would be the holy grail of oblique spaceship search programs. In 2020-21, Exa made immense progress on (2,1)c/7 with LSSS, but they had to perform the adaptive widening manually, painfully, and suboptimally. I conducted a few searches using this manual procedure, and the partials got really big, really fast (about 10 minutes)!

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

Re: A new spaceship search approach

Post by Sokwe » December 22nd, 2023, 2:13 am

lordlouckster wrote:
December 21st, 2023, 8:32 am
I think LSSS with automatic adaptive widening would be the holy grail of oblique spaceship search programs. In 2020-21, Exa made immense progress on (2,1)c/7 with LSSS, but they had to perform the adaptive widening manually, painfully, and suboptimally. I conducted a few searches using this manual procedure, and the partials got really big, really fast (about 10 minutes)!
If you have interesting partial results, please post them in the spaceship discussion thread.
-Matthias Merzenich

Post Reply