Smallest Spaceships Supporting Specific Speeds (5s) Project

For discussion of other cellular automata.
AforAmpere
Posts: 1334
Joined: July 1st, 2016, 3:58 pm

Re: Smallest Spaceships Supporting Specific Speeds (5s) Project

Post by AforAmpere » June 20th, 2022, 2:22 am

Nice work on assembling the B0 speeds. One thing I did notice is that the 18c/20 is labeled as having 3 cells when it has 4 and the 11c/16d is labeled as (11,0)c/16, but those things will probably be pretty easily visible by script when that comes around. For the rules, I get why the last one exists, but it almost seems like it would incur almost a copy of half of the entire main database in the B0 one, just with some period doubling. I guess there's nothing inherently wrong with that, it just seems odd. Otherwise, A-C seem reasonable.

I should probably get back to working on EPE stuff so I can bring actual B0 functionality to it along with other rulespaces.
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: Smallest Spaceships Supporting Specific Speeds (5s) Project

Post by LaundryPizza03 » June 20th, 2022, 4:53 am

AforAmpere wrote:
June 20th, 2022, 2:22 am
For the rules, I get why the last one exists, but it almost seems like it would incur almost a copy of half of the entire main database in the B0 one, just with some period doubling.
Most non-B0 spaceships do not have a strobing equivalent, so this would not happen.

I was quick to recognize this finding of yours at discord as a new lowest oblique slope: (100,99)c/398.

Code: Select all

x = 6, y = 6, rule = B3aeiqy4eikrwz5ciq6cn7c/S2-ik3-ajkr4ceinqr5eikqy6-ae78
3bo$2bobo$3bobo$2bobo$bobo$3o!

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: Smallest Spaceships Supporting Specific Speeds (5s) Project

Post by AforAmpere » June 20th, 2022, 3:12 pm

LaundryPizza03 wrote:
June 20th, 2022, 4:53 am
Most non-B0 spaceships do not have a strobing equivalent, so this would not happen.
Ah, I was being dumb, B0/S8 rules don't strobe.

On a different note, ships like these that pop up are annoying:

Code: Select all

x = 51, y = 52, rule = B3aeiqy4ekr5cikqy6ci7c/S2-ik3-ajkr4ceinr5eijq6-a7c8
49bo$48bobo$46b5o$48bobo$49bo18$25bobo$26bobo$24bob3o$23bo2bobo$27bo8$
17bo$16b2o$15bobo$14bobo$15bo$12bobo$11bobo$12bo$9bobo$8bobo$9bo$6bobo
$5bobo$6bo$3bobo$2bobo$bobo$3o!
It's obviously trivial, but EPE doesn't detect it as of now. I'm not sure how to implement something efficient that does check it in general, since the pattern is non-stationary. As far as I can tell it would have to do a checking process for every set of factors of gcd(a,b) for speed ac/b. Maybe I'm just overlooking something obvious.

I suppose in the ideal case these would be replaced by smaller ships in the end anyway, but it seems hard to do anything about otherwise (unless adjustables are added, in which case many of these would disappear).
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
confocaloid
Posts: 2729
Joined: February 8th, 2022, 3:15 pm

Re: Smallest Spaceships Supporting Specific Speeds (5s) Project

Post by confocaloid » July 2nd, 2022, 8:13 am

A basic question: is it possible to view spaceships that were previously included but later replaced (if I understand correctly, this project aims to collect only one spaceship per speed)? Approximately how large the database would be if the older spaceships were not removed?
127:1 B3/S234c User:Confocal/R (isotropic rules, incomplete)
Unlikely events happen.
My silence does not imply agreement, nor indifference. If I disagreed with something in the past, then please do not construe my silence as something that could change that.

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

Re: Smallest Spaceships Supporting Specific Speeds (5s) Project

Post by LaundryPizza03 » July 6th, 2022, 11:07 pm

Rulespace exhausted. All improved speeds.
matchPatt2-test1.txt
Search results matching pattern o2$bobo! for 20 gen in rule B2ik3acijr4ijqy6i7c/S02aek3ijnqr4it5n6a with searchRule-matchPatt2.py using seed=1
(359 Bytes) Downloaded 22 times

Code: Select all

# Search results matching pattern o2$bobo! for 20 gen in rule B2ik3acijr4ijqy6i7c/S02aek3ijnqr4it5n6a with searchRule-matchPatt2.py using seed=1
3, B2ik3acijr4ijry5e6n7c/S02aek3ijnqr4it5en6n7c, 64, 0, 272, bobo2$o!
5, B2ik3-enqy4cijqry6in7c8/S02aek3ijnqr4it6ei8, 16, 9, 88, 3bo2$2o2bobo!
3, B2ik3-enqy4cijqy6i7c/S02aek3ijnqr4eit5en6aen, 28, 7, 164, o2$bobo!
866 new and 1164 improved speeds out of 2031 ships found after 6M rules.
matchPatt2-test2.txt
Search results matching pattern 2o$b2o$bo! for 14 gen in rule B2k3acijr4cijqy5c6cin7c8/S2aek3-aky4eit5cinr6-kn7c8 with searchRule-matchPatt2.py using seed=1
(195.08 KiB) Downloaded 28 times
20-cell 280c/576o characterized by NimbleRogue on Discord, and later at a RWID post.

Code: Select all

x = 18, y = 11, rule = B3-cnqy4k5ekr6cn/S2-ci3-aky4einrtyz5aejk6cei7c
15bo$15b2o$16b2o$13b2obo$14b2o$12b2o2$2o$obo$2bo$3o!
0 new and 308 improved speeds out of 309 ships found after 36M rules.
matchPatt2-test3.txt
# Search results matching pattern bo$bo$o! for 15 gen in rule B2-an3cek4-ikqrw5eijr6ek7c8/S012ein3-eiqy4krw5ajr6-ei7c with searchRule-matchPatt2.py using seed=1
(24.56 KiB) Downloaded 23 times

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: Smallest Spaceships Supporting Specific Speeds (5s) Project

Post by LaundryPizza03 » July 26th, 2022, 12:32 am

3 ships found after 1302000 candiate rules.

Code: Select all

# Search results matching pattern 8bo$6b2obo$4bob3obo$5b5obo$3b9o$2b8obo$ob7obo$o2b5obo$4b3obo$5bobo$6bo! for 11 gen in rule B3acijy4ceqtyz5cekqy6-n7c/S2ckn3-ajky4eiqy5jknry6-kn78 with searchRule-matchPatt2.py using seed=1
28, B2i3aijky4ciqtwyz5cekq6ack7/S2ck3-ajk4iqwy5ejkny6-kn78, 1168, 0, 2336, 4bo$3bobo$2b3obo$b6o$5obo$4obo$b2obo$3bo!
50, B2in3aeijy4iqtyz5cekqy6ack7c/S2cn3-ajky4cqrty5jny6-k78, 1179, 0, 2358, 6bo$4b2obo$2bob3obo$bob5obo$2b8o$ob6obo$2b5obo$2b4obo$2b3obo$3bobo$4bo!
38, B2n3-enqr4ciqtwz5cekq6-en7c8/S2ck3ceinr4eqrw5ejny6-kn78, 1004, 0, 2008, 4bo$2b2obo$b4obo$ob4obo$2b6o$2b4obo$ob3obo$b3obo$2bobo$3bo!
396 new and 626 improved speeds out of 1023 ships found after 31.7M rules.
matchPatt2-test1.txt
Search results matching pattern 2o$b2o$bo! for 12 gen in rule B3-cnqy4ckz5cjr6cn7c8/S2-ci3-ak4einrtyz5jkr6-an78 with searchRule-matchPatt2.py using seed=1
(95.71 KiB) Downloaded 19 times

Code: Select all

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

User avatar
NimbleRogue
Posts: 524
Joined: January 11th, 2021, 11:48 pm

Re: Smallest Spaceships Supporting Specific Speeds (5s) Project

Post by NimbleRogue » July 28th, 2022, 4:37 am

5261 new and 12294 improved
Attachments
updated.txt
(1.73 MiB) Downloaded 27 times

Code: Select all

x = 4, y = 3, rule = B3-cnqy4e5kr6n7c/S2-i3-ay4einrtyz5cejn6cin78
bo$3o$ob2o!

Code: Select all

#14c/85265o
x = 10, y = 4, rule = B2-an3-iqy4iknrtz5aijqy6aei78/S02ck3nqy4eiqrtwy5-ekq6-i78
2bo4bo$3b4o$ob6obo$2b6o!

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

Re: Smallest Spaceships Supporting Specific Speeds (5s) Project

Post by LaundryPizza03 » July 28th, 2022, 1:36 pm

B3/S2456-type frontends.

30 new and 52 improved speeds out of 82 ships found after testing 29M candidate rules.
matchPatt2-test1.txt
(6.61 KiB) Downloaded 28 times
14 new and 74 improved speeds out of 88 ships found after testing 47M candidate rules.
matchPatt2-test2.txt
(7.11 KiB) Downloaded 27 times

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: Smallest Spaceships Supporting Specific Speeds (5s) Project

Post by LaundryPizza03 » August 3rd, 2022, 8:40 am

I have completed the necessary modifications sssb0.py and B0_5S_update.py. I have not, however, assembled the search script.
sssb0.py.txt
(18.54 KiB) Downloaded 22 times
B0_5S_update.py.txt
(11.28 KiB) Downloaded 20 times
The list of updated ships will be outputted to a file called "B0 updated ships.sss.txt".

Here is an updated version of the database, including error corrections and 216 new results found by NimbleRogue using the regular searchRule. Additionally, all the results have been moved the minrule; for example, the 6c/12o in B0.
B0_5S_collection.zip
269 diagonal, 310 oblique, and 353 orthogonal ships
(24.1 KiB) Downloaded 25 times
(All of NimbleRogue's results were verified to be correct, but this may not hold in rules where odd generations tend to have lower population.)

Errata: Aside from wrong speeds, orientations, populations, and placements that may have been automatically corrected, the following errors were found.
  • The (6,4)c/8 was found to acutally be (3,2)c/4; I have found the following replacement:

    Code: Select all

    x = 2, y = 4, rule = B01e2cen3airy4aijkn5acjq6ek/S01e2kn3akr4crz5jq6ae
    bo2$bo$o!
    
  • The c/156d had a damaged RLE (left). The corrected RLE from New Gliders DB is shown on right.

    Code: Select all

    x = 26, y = 6, rule = B0138/S01235
    4bo19bo$b2o18b2o2bo$bobo17bobobo$2b2o18b2o$o19bo$b2o18b2o!
    
EDIT: 44c/44o, 3 cells. Not the frontend I was working for, but it worked.

Code: Select all

x = 3, y = 4, rule = B01c2-c3-cery4-nrz5cny6n7e/S0123-acjk4ert5-aik6ain
2bo2$2bo$o!

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: Smallest Spaceships Supporting Specific Speeds (5s) Project

Post by LaundryPizza03 » August 3rd, 2022, 6:12 pm

Warning: Due to technical limitations, if you load an RLEinto B0_5S_update.py, it must be in an even generation in order for the script to process the pattern correctly.

Regardless, I have fixed a minor issue regarding an undefined "rule" variable in the importNewShips() function; this fix can be trivially implemented in the regular 5S_update as well.

Code: Select all

def importNewShips():
    newshiptxt = g.getclipstr()
    status = 'Searching clipboard for new ships ...'
    Nnew = 0
    constructRLE = False
    errormsg = 'Error: failed to recognise rle pattern. Current pattern string:\n'
    shiprle = ''
    rulestr = ''
    global newShipsList
    for line in newshiptxt.splitlines():
        line = line.strip()
        if constructRLE == False:
            # Try to import sss format ship
            newship = sssb0.parseshipstr(line)
            if not newship:
                # Try to import rle format ship
                if(line[0:4] == 'x = '):
                    # Found beginning of rle formatted pattern
                    if constructRLE == True:
                        g.note(errormsg + rulestr + shiprle + line)
                    constructRLE = True
                    parts = line.split('=')
                    if len(parts)==4:
                        rulestr = parts[3].strip()
                    else:
                        constructRLE = False
                        g.note(errormsg + line)
                    shiprle = ''
        else:
            # Try to import sss format ship (just in case rle recognizer is confused)
            newship = sssb0.parseshipstr(line)
            if newship:
                g.note(errormsg + rulestr + shiprle + line)
            # Continue constructing rle pattern string
            shiprle += line
            if '!' in line:
                constructRLE = False
                newship = (0, rulestr, 0, 0, 0, shiprle)
# Rest of function is as in the current version
Some more findings, including another ship from a rule posted in MDIOCA by NimbleRogue.

Code: Select all

3, B01c2-c3-cery4-enrz5cny6n7e/S0123-acjk4ert5-aik6ain, 44, 0, 44, 2bo2$2bo$o!
3, B01e2aik3c4jy5ikq7e/S2ac3eijqy4kt, 6, 0, 36, o$bo$bo!
3, B01e2a3ci4jqy5ik6n7e/S2a3eiy4kqt5i, 9, 1, 38, 2bo$2o!
3, B01e2akn3c4jk5aik7e/S2a3y4kt5k, 2, 2, 52, b2o$o!
3, B01e2a3cy4jqy5aik7e/S2ac3i4kt, 4, 3, 22, 2bo$2o!
3, B01e2a3c4jky5cik6n7e/S2a3aiq4kt, 10, 0, 36, bo$bo$o!
3, B01e2a3cq4ajq5ein/S2a4jktw5y6e, 5, 3, 12, o$2bo2$2bo!
3, B01c2c3-anry4k5c/S12n3e5cn6e, 1, 1, 48, o2$o$bo!
3, B01c2c3-anry4ny5c6a/S13e4i5cn6e, 4, 4, 32, o2$o$bo!
3, B01c2c3-anry4e5cj/S12in3e4rz5cejnr6en, 5, 5, 28, o2$o$bo!
3, B01c2c3eijq4twz5acj6k/S14cei5ceny6e, 12, 12, 308, bobo$o!
3, B01c2c3eijq4twz5cj6ak7c/S12c3q4ceij5ce6e, 5, 4, 12, o2$b2o!
13, B013kry4aejkqwz5ajny6ei/S12k3ay4jk6in, 11, 11, 3948, 2ob2o$2b2o$ob2o$obo3$2o!

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: Smallest Spaceships Supporting Specific Speeds (5s) Project

Post by LaundryPizza03 » August 6th, 2022, 12:31 am

I discovered a fatal bug sssb0 in that corrupted some of the output fo B0_5S_update.py. I am still fixing this.

As a result, some of the ships in the new DB are incorrect; I am running through to find the erroneous entries and reconstruct the database.

EDIT: I retracted an attempted fix that didn't work. In the meantime, comment out the line "setminisorule(period)" in canon5Sship in sssb0.py.

Code: Select all

setminisorule(period)

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: Smallest Spaceships Supporting Specific Speeds (5s) Project

Post by LaundryPizza03 » August 6th, 2022, 1:18 am

Corrected DB; some entries may have been lost forever.
Archive.zip
(25.54 KiB) Downloaded 25 times
EDIT: Completely fixed sssb0, althoguh B0_5S_update.py is slower now.
EDIT2: Made a bit faster.
EDIT3: Errors again, fixing...

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: Smallest Spaceships Supporting Specific Speeds (5s) Project

Post by LaundryPizza03 » August 6th, 2022, 2:24 am

This is the closest I got.
sssb0.py.txt
(18.77 KiB) Downloaded 21 times
Sometimes, getRuleRangeElems discards all the birth transitions in a ship and skips all the survival transitions. For example, if B0 oblique ships.sss.txt in the Archive.zip is cloned into a empty file, then the minrule of the (3,2)c/14 becomes B/S2cei3cenry4citw5ceknr6ikn instead of the correct B03cekny4eirw5inq6aek7c/S2cei3cenr4it5ceknr6k. No other errors were found in the output files. This does not happen if only the previous few entries are cloned. If you have a fix for this, please post it.

Code: Select all

x = 5, y = 5, rule = B02i3cekny4ceijrw5inqy6-ci7/S2cei3cenry4citw5ceknr6ikn
4bo3$o$4bo!
EDIT: This fix, at least, seems to prevent breaking the entries.

Code: Select all

def getRuleRangeElems(period, ruleRange = 'minmax'):
    if g.empty():
        return
    if period < 1:
        return
    
    rule = g.getrule().split(':')[0]
    
    if not (rule[0] == 'B' and '/S' in rule):
        g.exit('Please set Golly to an isotropic 2-state rule.')
    
    # Parse rule string to list of transitions for Birth and Survival
    oldrule = rule
    Bstr, Sstr = rule.split('/')
    Bstr = Bstr.lstrip('B')
    Sstr = Sstr.lstrip('S')
    b_need = parseTransitions(Bstr)
    b_OK = list(b_need)
    b_OK.remove('0') #fixme
    s_need = parseTransitions(Sstr)
    s_OK = list(s_need)

    patt = g.getcells(g.getrect())
    
    # Record behavior of pattern in current rule
    clist = []
    poplist = []
    for i in range(0,period):
        g.run(1)
        clist.append(g.getcells(g.getrect()))
        poplist.append(g.getpop())
    finalpop = g.getpop()
    
    if 'min' in ruleRange:
        # Test all rule transitions to determine if they are required
        for t in b_OK:
            g.setgen('0')
            #if int(g.getgen())%2 == 1:
            #    g.warn(str([rule,t,g.getgen()])) #fixme
            b_need.remove(t)
            g.setrule('B' + ''.join(b_need) + '/S' + Sstr)
            r = g.getrect()
            if r: 
                g.select(r)
                g.clear(0)
            g.putcells(patt)
            for j in range(0, period):
                g.run(1)
                try:
                    if not(clist[j] == g.getcells(g.getrect())):
                        b_need.append(t)
                        break
                except:
                    b_need.append(t)
                    break
        b_need.sort()

        for t in s_OK:
            g.setgen('0')
            #if int(g.getgen())%2 == 1:
            #    g.warn(str([rule,t,g.getgen()])) #fixme
            s_need.remove(t)
            g.setrule('B' + Bstr + '/S' + ''.join(s_need))
            r = g.getrect()
            if r: 
                g.select(r)
                g.clear(0)
            g.putcells(patt)
            for j in range(0, period):
                g.run(1)
                try:
                    if not(clist[j] == g.getcells(g.getrect())):
                        s_need.append(t)
                        break
                except:
                    s_need.append(t)
                    break
        s_need.sort()
    
    if 'max' in ruleRange:
        # Test unused rule transitions to determine if they are allowed
        allRuleElem = [t for l in Hensel for t in l]
        
        for t in allRuleElem:
            if t in b_OK:
                continue
            b_OK.append(t)
            g.setrule('B' + ''.join(b_OK) + '/S' + Sstr)
            r = g.getrect()
            if r: 
                g.select(r)
                g.clear(0)
            g.putcells(patt)
            for j in range(0, period):
                g.run(1)
                try:
                    if not(clist[j] == g.getcells(g.getrect())):
                        b_OK.remove(t)
                        break
                except:
                    b_OK.remove(t)
                    break
        b_OK.sort()
        
        for t in allRuleElem:
            if t in s_OK:
                continue
            s_OK.append(t)
            g.setrule('B' + Bstr + '/S' + ''.join(s_OK))
            r = g.getrect()
            if r: 
                g.select(r)
                g.clear(0)
            g.putcells(patt)
            for j in range(0, period):
                g.run(1)
                try:
                    if not(clist[j] == g.getcells(g.getrect())):
                        s_OK.remove(t)
                        break
                except:
                    s_OK.remove(t)
                    break
        s_OK.sort()
    
    r = g.getrect()
    if r: 
        g.select(r)
        g.clear(0)
    g.putcells(patt)
    g.setrule(oldrule)
    
    return b_need, s_need, b_OK, s_OK
EDIT2: The six entries affected in the obliques file.

Code: Select all

3, B02i3cekny4ceijrw5inqy6-ci7/S2cei3cenry4citw5ceknr6ikn, 3, 2, 14, 4bo3$o$4bo!
3, B02in3cky4-aknqt5jnry6-i7c/S2ei3-cy4cejz5jny6-ae, 8, 5, 16, 3bo4$o2bo!
3, B03cjky4cwyz5ckry6-ai/S2in3-ejkn4-aikn5ekqry6-ai, 7, 5, 16, 3bo$o3$3bo!
3, B03ceqry4cjkwyz5ejqry6cin/S2ik3-ceiq4cijqrt5cenqy6in, 6, 3, 16, 5bo4$o3bo!
3, B02n3-inqr4ciqrtw5cq6-in/S2ikn3a4jr5y, 4, 2, 66, o$3bo3$bo!
3, B03cekny4cjkz5ekr6ak/S2-cn3aj4ej5a, 4, 3, 68, o3$2o!
Their respective minrules are:
  1. B03cekny4eirw5inq6aek7c/S2cei3cenr4it5ceknr6k
  2. B02in3cky4eijrwyz5jnr6-ik7c/S2ei3-cy4cejz5jny6ckn
  3. B03cjky4cwyz5ckr6en/S2in3aciqry4qrty5k6cen
  4. B03ceqry4jwyz5ejqry6cin/S2ik3-ceiq4cijqrt5nqy6i
  5. B02n3-inqr4ciqrtw5q6aek/S2ikn3a4jr5y
  6. B03cekny4cjkz5ekr6ak/S2-cn3aj4j5a
All of the ships consist of 3 cells with no islands separated by 1 cell, and they all vanish without B0.

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: Smallest Spaceships Supporting Specific Speeds (5s) Project

Post by LaundryPizza03 » August 15th, 2022, 1:15 am

(70,10)c/156, 31 cells:

Code: Select all

x = 17, y = 22, rule = B3-cnqy4jz5cr6i7c/S2-i3-a4einrtyz5ae6cn7
b2o$2o$o7$14b3o$16bo$12bo3bo$13b3o$5b2o5b2o$5b2o2$7bo$6b2o$6bobo$8b2o$
6b3o$5bo!
301 new and 416 improved speeds out of 718 ships found after testing 10M candidate rules.
matchPatt2-test1.txt
(70.24 KiB) Downloaded 23 times
(46,12)c/110, 40 cells:

Code: Select all

x = 34, y = 20, rule = B3aeijr4ejk5ckr6cn8/S2-i3-a4einrtyz5acekr6cen7c8
30b2o$30bob2o$b2ob2o27bo$2o3b2o22b2o2bo$32bo$30bo6$bo$b2o$bob2o$2b2o
22b2o$26bobo$28b2o$25b4o$26b2o$25bo!
In general, higher-period multiples of medium-period fast oblique speeds can often be obtained by combining several copies of a B-like engine.

(17,7)c/1788 in the same rule as the (18,6)c/1502:

Code: Select all

x = 34, y = 40, rule = B2k3acijr4cijy6cn/S2aek3-acey4ceiqty5aeknr6cen7c8
2ob2o2b2o$bo2bobob2o$b2o3bobo$3b3obo$5b2o11$32b2o$31bobo$31bo$31b3o15$22b3o$
22bo2bo$24b2o$23bo$23bo2$23bo!

Code: Select all

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

User avatar
NimbleRogue
Posts: 524
Joined: January 11th, 2021, 11:48 pm

Re: Smallest Spaceships Supporting Specific Speeds (5s) Project

Post by NimbleRogue » August 16th, 2022, 4:52 am

Many B0 Ships
Attachments
B0 updated ships.sss.txt
(2.87 MiB) Downloaded 21 times

Code: Select all

x = 4, y = 3, rule = B3-cnqy4e5kr6n7c/S2-i3-ay4einrtyz5cejn6cin78
bo$3o$ob2o!

Code: Select all

#14c/85265o
x = 10, y = 4, rule = B2-an3-iqy4iknrtz5aijqy6aei78/S02ck3nqy4eiqrtwy5-ekq6-i78
2bo4bo$3b4o$ob6obo$2b6o!

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

Re: Smallest Spaceships Supporting Specific Speeds (5s) Project

Post by LaundryPizza03 » August 16th, 2022, 7:07 am

NimbleRogue wrote:
August 16th, 2022, 4:52 am
Many B0 Ships
This datafile contains incorrect rules, such as:

Code: Select all

x = 2, y = 4, rule = B01e3k4ajqz5cn6i/S1e3a4ik5k
2o$bo2$o!
Did you implement the corrections that I posted previously before processing the results?

Code: Select all

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

User avatar
NimbleRogue
Posts: 524
Joined: January 11th, 2021, 11:48 pm

Re: Smallest Spaceships Supporting Specific Speeds (5s) Project

Post by NimbleRogue » August 16th, 2022, 4:22 pm

LaundryPizza03 wrote:
August 16th, 2022, 7:07 am
NimbleRogue wrote:
August 16th, 2022, 4:52 am
Many B0 Ships
This datafile contains incorrect rules, such as:

Code: Select all

x = 2, y = 4, rule = B01e3k4ajqz5cn6i/S1e3a4ik5k
2o$bo2$o!
Did you implement the corrections that I posted previously before processing the results?
I forgot to change import sss to import sssb0. in the code lol.

Code: Select all

x = 4, y = 3, rule = B3-cnqy4e5kr6n7c/S2-i3-ay4einrtyz5cejn6cin78
bo$3o$ob2o!

Code: Select all

#14c/85265o
x = 10, y = 4, rule = B2-an3-iqy4iknrtz5aijqy6aei78/S02ck3nqy4eiqrtwy5-ekq6-i78
2bo4bo$3b4o$ob6obo$2b6o!

User avatar
NimbleRogue
Posts: 524
Joined: January 11th, 2021, 11:48 pm

Re: Smallest Spaceships Supporting Specific Speeds (5s) Project

Post by NimbleRogue » August 16th, 2022, 4:24 pm

LaundryPizza03 wrote:
August 16th, 2022, 7:07 am
NimbleRogue wrote:
August 16th, 2022, 4:52 am
Many B0 Ships
This datafile contains incorrect rules, such as:

Code: Select all

x = 2, y = 4, rule = B01e3k4ajqz5cn6i/S1e3a4ik5k
2o$bo2$o!
Did you implement the corrections that I posted previously before processing the results?
I forgot to change import sss to import sssb0. in the searchrule code lol.

Code: Select all

x = 4, y = 3, rule = B3-cnqy4e5kr6n7c/S2-i3-ay4einrtyz5cejn6cin78
bo$3o$ob2o!

Code: Select all

#14c/85265o
x = 10, y = 4, rule = B2-an3-iqy4iknrtz5aijqy6aei78/S02ck3nqy4eiqrtwy5-ekq6-i78
2bo4bo$3b4o$ob6obo$2b6o!

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

Re: Smallest Spaceships Supporting Specific Speeds (5s) Project

Post by LaundryPizza03 » August 16th, 2022, 4:37 pm

NimbleRogue wrote:
August 16th, 2022, 4:24 pm
LaundryPizza03 wrote:
August 16th, 2022, 7:07 am
NimbleRogue wrote:
August 16th, 2022, 4:52 am
Many B0 Ships
This datafile contains incorrect rules, such as:

Code: Select all

x = 2, y = 4, rule = B01e3k4ajqz5cn6i/S1e3a4ik5k
2o$bo2$o!
Did you implement the corrections that I posted previously before processing the results?
I forgot to change import sss to import sssb0. in the searchrule code lol.
Good. You should still be able to recreate the results correctly if you've saved the defective matchPatt2-test.txt, by using the exact seeds and starting patterns.

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: Smallest Spaceships Supporting Specific Speeds (5s) Project

Post by LaundryPizza03 » August 16th, 2022, 8:31 pm

NimbleRogue discovered another bug in the sssb0 script. It happened after reaching around 2500 ships in a modded version of searchRule_matchPatt2.py, in the method giveRLE.

Code: Select all

Traceback (most recent call last):
File " «string>", line 1, in «module)
File"C/UserslaveryDownloads\sssss\searchRule_matchPatt2_b0.pyline264,in«module
shipRLE = sssb0.giveRLE(g.getcells(g, getrectO))
File "sssb0 py*, line 192, in giveRLE
mcc = min(clist chunks)
ValueError: min0 arg is an empty sequence
My guess is that something passed an empty cell list (i.e., an empty pattern) to the method giveRLE, where the exception was thrown. It might be related to the issue that causes the previously noted bug in getRuleRangeElems when processing a long list of ships.

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: Smallest Spaceships Supporting Specific Speeds (5s) Project

Post by LaundryPizza03 » September 13th, 2022, 4:49 am

344c/704o:

Code: Select all

x = 74, y = 33, rule = B3aeijr4jkz6cn7c8/S2-i3-ak4ceinrtz5acjkr6cn78
o$b3o$3bo$bobo$b2o62bobo$66bo4bo$65bo5b2o$67bo4b2o$65b2obobobo$68bob2o
$68b2o16$65bo2bo$65b2o2bob2o$66bo2b3obo$67b2o4bo$67b2obob2o$67bo3bo$
68b3o!

Code: Select all

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

GUYTU6J
Posts: 2200
Joined: August 5th, 2016, 10:27 am
Location: 拆哪!I repeat, CHINA! (a.k.a. 种花家)
Contact:

Re: Smallest Spaceships Supporting Specific Speeds (5s) Project

Post by GUYTU6J » September 13th, 2022, 6:41 am

GUYTU6J wrote:
September 29th, 2021, 7:10 am
It has been a long time since my last contribution, but is the script updated to save the most recent number in the rule-generating PRNG upon quitting, so that it can be the next starting seed?
Okay, I have to do that myself. Forget to publish till now. Some recent searches were done with the following modification:

Code: Select all

# searchRule-matchPatt2.py
# A new implementation of searchRule-matchPatt.py
# Searches for small oscillators and spaceships in the isotropic 2-state CA
# rulespace where several phases of the starting pattern match the evolution
# of the pattern in the current layer.
#
# by Arie Paap, Jun 2019
# Original random rule search scripts by Arie Paap and Rhombic
#
# Differences from searchRule-matchPatt.py:
#   - Press 'q' to stop searching (instead of aborting with 'Esc')
#   - Uses routines from sss.py library to analyse small patterns in isotropic
#       2-state rules
#   - Maintains record of found spaceship speeds to avoid reporting duplicate
#       results (set bUniqueSpeeds to false to disable)
#   - Optionally allows pattern to be run for a short stabilisation time prior
#       to testing for periodicity
#   - Optionally loads previously found speeds from output file at start of
#       search
#   - Optionally also load ships from 5S project into record of known speeds
#   - Random rule generator uses an iterator which pseudo randomly scans the
#       entire rulespace
#
# Hacked by GUYTU6J in 2021 to add these features:
#   - Save the random rule iterators' current state when interrupting the
#       search so that it can be resumed (repeating the same search without
#       changing the seed will search the same rules)
#   - Save oscillators and spaceships in different files
#   - Report counts of results by type in message
#
# Potential features to be added
#   - XXX Separate components expanding in different directions
#   - XXX Separate non-interacting spaceships and oscillators

from __future__ import division

import time
import timeit
import golly as g
import sss

timer = timeit.default_timer

# Search parameters

# Exclude ships with period less than minShipP
minShipP = 64
# Fast ships have a lower threshold for interesting period
minSpeed = 0.5
fastShipP = 9
# Exclude oscillators with period less than minOscP
minOscP = 16
# Maximum period to test the pattern for
maxGen = 65536 # 65536
# Maximum population in any phase
maxPop = 1000 # 1000
# Maximum bounding box dimension (0 to disable)
# - Early abort testRule() when stabilisation not detected e.g. when
#   spaceships emitted in multiple directions
maxDim = 500 # 500
# Allow search for oscillators
bOsc = False
# Output files
resultsFile_spaceships = 'matchPatt2-spaceships.txt'
resultsFile_oscillators = 'matchPatt2-oscillators.txt'
# Only record ships with unique speed? (or smaller than previously found)
bUniqueSpeeds = True # True
# Import 5S project into known speeds?
bImport5S = True # True
# Special case speeds to ignore (useful when bUniqueSpeeds = False)
ignoreResults = [] # A list of the form: [(dx, dy, P)]

# Number of generations to match pattern behaviour
s = g.getstring('How many generations to remain unchanged:', '', 'Rules calculator')
if not s.isdigit():
    g.exit('Bad number: %s' % s)
numgen = int(s)
if numgen < 1:
    g.exit('Generations to match must be at least 1.')
# Seed for random rule generator
seed = 1
seed_0 = seed
seedFile = 'seed.txt'

# Initial stabilisation time
# Test pattern is run in each random rule for stabGen generations before 
# periodicity detection begins
# Set to 0 to only match the test pattern
stabCycles = 10 # 10
stabGen = stabCycles * numgen
# Stability check periodicity
# - Used to detect if pattern becomes periodic after initial stabilisation time
#   Pattern won't be detected as an oscillator or spaceship, just avoids
#   simulting until maxGen generations have passed.
stabCheckP = 24 # 24

# Minimum population criteria
# - Probably redundant now that stability checking has been added
if bOsc: minPop = 2 # Patterns with 0, or 1 cells can not be oscillators
else: minPop = 3 # Patterns with 0, 1, or 2 cells can not be ships

# Test pattern in given rule
# Original pattern is evolved in the given randomly generated rule.
# Pattern is evolved for a short stabilisation period and then tested to
# determine if it has become an oscillator or a spaceship. 
def testRule(rulestr):
    r = g.getrect()
    if r:
        g.select(r)
        g.clear(0)
    g.putcells(origPatt)
    g.setrule(rulestr)
    g.run(stabGen)
    if g.empty():
        return ()
    pop = int(g.getpop())
    if (pop < minPop or pop > maxPop):
        return ()
    r = g.getrect()
    testPatt = g.transform(g.getcells(r),-r[0],-r[1])
    testPop = int(g.getpop())
    testRect = g.getrect()
    stabPatt = list(testPatt)
    stabPop = testPop
    for ii in range(maxGen):
        g.run(1)
        pop = int(g.getpop())
        if (pop < minPop or pop > maxPop):
            break
        if (pop == testPop):
            # Test for periodicity
            r = g.getrect()
            if testPatt == g.transform(g.getcells(r),-r[0],-r[1]):
                period = ii+1
                dy, dx = sss.minmaxofabs((r[0] - testRect[0], r[1] - testRect[1]))
                if (dx == 0):
                    # Oscillator (reject if low period or bOsc is False)
                    if bOsc and period >= minOscP:
                        return (0, 0, period)
                elif ( period >= minShipP ):
                    # Spaceship
                    return (dx, dy, period)
                elif ( (dx + dy/1.9) / (period * 1.0) > minSpeed and period >= fastShipP ):
                    # Fast spaceship
                    return (dx, dy, period)
                break # Pattern is a low period oscillator or spaceship
        # Stability check
        if (ii % stabCheckP == 0):
            r = g.getrect()
            # First check for BBox expansion
            if maxDim > 0 and max(r[2:4]) > maxDim:
                # Pattern is expanding
                # XXX Attempt to separate components expanding in different directions
                break
            currPatt = g.transform(g.getcells(r),-r[0],-r[1])
            if (pop == stabPop and currPatt == stabPatt):
                # Pattern has stabilised to low period oscillator / spaceship
                break
            stabPop = pop
            stabPatt = list(currPatt)
    return ()

# Preload foundSpeeds from existing results file
foundSpeeds = {}
def loadKnownSpeeds(resultsFile):
    global foundSpeeds
    g.show('Loading known speeds from file %s' % resultsFile)
    try:
        with open(resultsFile, 'r') as rF:
            for line in rF:
                # Trust the data in the sss file, no need to test ships
                ship = sss.parseshipstr(line)
                if not ship:
                    continue
                minpop, _, dx, dy, period, _ = ship
                try:
                    if foundSpeeds[(dx, dy, period)] <= minpop:
                        # Skip this speed unless the current ship is smaller
                        continue
                except KeyError:
                    pass
                foundSpeeds[(dx, dy, period)] = minpop
    except IOError:
        return 1
    return 0

if bImport5S:
    bUniqueSpeeds = True
    shipFiles = ['Orthogonal ships.sss.txt', 'Diagonal ships.sss.txt', 'Oblique ships.sss.txt']
else:
    shipFiles = []
    
status = 'Results file: %s, %s.' % (resultsFile_oscillators, resultsFile_spaceships)
if bUniqueSpeeds:
    with open(resultsFile_oscillators, 'a+') as rF:
        pass
    shipFiles.append(resultsFile_oscillators)
    for F in shipFiles:
        if loadKnownSpeeds(F):
            g.exit('Failed to load known speeds from file: %s' % F)
    with open(resultsFile_spaceships, 'a+') as rF:
        pass
    shipFiles.append(resultsFile_spaceships)
    for F in shipFiles:
        if loadKnownSpeeds(F):
            g.exit('Failed to load known speeds from file: %s' % F)
    status += ' %d known speeds loaded.' % len(foundSpeeds)

# Set up the search with the current pattern
r = g.getrect()
origPop = int(g.getpop())
origPatt = g.transform(g.getcells(r),-r[0],-r[1])
origRule = g.getrule()

Nfound = 0 # Total result count
Nosc = 0 # Oscillator count
Northo = 0 # Orthogonal spaceship count
Ndiago = 0 # Diagonal spaceship count
Nobliq = 0 # Oblique spaceship count
updateP = 1000 # Message update period
saveP = 32768 # Seed saving period
lastRule = ''

# --------------------------------------------------------------------

# Generator for random order rule iterator over a given rulespace
# Uses a linear congruential generator to iterate over all the rules
# in the given rulespace in a pseudo random order
# The rule space is specified by four lists:
#   B_need - the required Birth transitions
#   S_need - the required Survival transitions
#   B_OK - the optional Birth transitions
#   S_OK - the optional Survival transitions
# Provide a value to seed to specify the starting point of the generator
#   seed < 2^(len(B_OK) + len(S_OK))
# --------------------------------------------------------------------

def iterRuleStr(B_OK, S_OK, B_need=[], S_need=[], usingseed=1):
    # Pseudo-random rule index generator using an LCG
    def randRuleIdx(nB_OK, nS_OK, usingseed=1):
        # LCG state initialisation
        m = 2**(nB_OK + nS_OK)
        c = 7
        a = 5
        # Reduce collisions for small seed values
        for _ in range(3):
            usingseed = (a*usingseed+c) % m
        
        # Masks for birth and survival transitions
        maskS = 2**nS_OK - 1
        maskB = (2**nB_OK - 1) << nS_OK
        
        for ii in range(m):
            global seed
            usingseed = (a*usingseed+c) % m
            seed = usingseed
            randS = usingseed & maskS
            randB = (usingseed & maskB) >> nS_OK
            yield (randB, randS)
    
    # Transition String retrieval
    def getTransStr(tList, idx):
        trans = ''
        for t in tList:
            if (idx & 1):
                trans += t
            idx = idx >> 1
        return trans
    
    Bstr = 'B' + ''.join(B_need)
    Sstr = '/S' + ''.join(S_need)
    
    for (Bidx, Sidx) in randRuleIdx(len(B_OK), len(S_OK), seed):
        rulestr = Bstr + getTransStr(B_OK, Bidx) + Sstr + getTransStr(S_OK, Sidx)
        yield rulestr

# Above copied from original sss.py library to enable saving seeds. -GUYTU6J
# --------------------------------------------------------------------

try:
    # Begin the search
    g.new('MatchPatt')
    g.putcells(origPatt)
    
    # Determine the rulespace to search
    B_need, S_need, B_OK, S_OK = sss.getRuleRangeElems(numgen)
    rulerange = sss.rulestringopt('B' + ''.join(sorted(B_need)) + '/S' + ''.join(sorted(S_need)) + \
            ' - B' + ''.join(sorted(B_OK)) + '/S' + ''.join(sorted(S_OK)))
    B_OK = [t for t in B_OK if t not in B_need]
    S_OK = [t for t in S_OK if t not in S_need]
    rulespace = len(B_OK) + len(S_OK)
    status += ' Matching pattern works in 2^%d rules: %s' % (rulespace, rulerange)
    g.show(status)
    g.update()
    time.sleep(2)
    
    # Results header
    with open(resultsFile_oscillators, 'a') as rF:
        msg = '\n# Oscillator search results matching pattern %s for %d gen' % (sss.giveRLE(origPatt), numgen)
        msg += ' in rule %s with searchRule-matchPatt2.py using seed=%d\n' % (origRule, seed_0)
        rF.write(msg)
    with open(resultsFile_spaceships, 'a') as rF:
        msg = '\n# Spaceship search results matching pattern %s for %d gen' % (sss.giveRLE(origPatt), numgen)
        msg += ' in rule %s with searchRule-matchPatt2.py using seed=%d\n' % (origRule, seed_0)
        rF.write(msg)
    with open(seedFile, 'a') as rF:
        msg = '\n# Used seed starting from %d and with interval %d \n' % (seed_0, saveP)
        rF.write(msg)
    
    start_time = timer()
    
    # Random rule iterator. Change seed to repeat search with different rules from given rulespace
    for (ii, rule) in enumerate(iterRuleStr(B_OK, S_OK, B_need, S_need, usingseed=seed), start=1):
        result = testRule(rule)
        if result and (not result in ignoreResults):
            minpop = int(g.getpop())
            mingen = 0
            # Find minimum population
            for gen in range(1, result[2]):
                g.run(1)
                pop = int(g.getpop())
                if pop < minpop:
                    minpop = pop
                    mingen = gen
            if bUniqueSpeeds:
                g.run(1)
                try:
                    if foundSpeeds[result] <= minpop:
                        # Skip this speed unless the current ship is smaller
                        continue
                except KeyError:
                    pass
                foundSpeeds[result] = minpop
            # Interesting pattern found
            Nfound += 1
            dx, dy, period = result
            lastRule = rule
            if dy == 0:
                if dx == 0:
                    description = 'Found oscillator with period = %d' % period
                    resultsFile = resultsFile_oscillators
                    Nosc += 1
                else:
                    description = 'Found orthogonal spaceship with speed = %dc/%d' % (dx, period)
                    resultsFile = resultsFile_spaceships
                    Northo += 1
            elif dy == dx:
                description = 'Found diagonal spaceship with speed = %dc/%d' % (dx, period)
                resultsFile = resultsFile_spaceships
                Ndiago += 1
            else:
                description = 'Found knightship with speed = (%d, %d)c/%d' % (dx, dy, period)
                resultsFile = resultsFile_spaceships
                Nobliq += 1
            g.show(description)
            g.run(mingen+1)
            shipRLE = sss.giveRLE(g.getcells(g.getrect()))
            sss.setminisorule(period)
            newship = (minpop, g.getrule(), dx, dy, period, shipRLE)
            with open(resultsFile, 'a') as rF:
                rF.write(', '.join(map(str, newship))+'\n')
        if (ii % saveP == 0):
            with open(seedFile, 'a') as rF:
                rF.write('%d\n' % (seed))
        if (ii % updateP == 0):
            curr_time = timer()
            g.select([])
            msg = '%d objects (%d oscs, %d ortho, %d diago, %d obliq) found ' % (Nfound, Nosc, Northo, Ndiago, Nobliq)
            msg += 'after testing %d candidate rules out of 2^%d rule space, %d rules/second' % (ii, rulespace, updateP/(curr_time - start_time))
            msg += ', seed %d' % (seed)
            start_time = curr_time
            g.show(msg)
            g.fit()
            g.setmag(3)
            g.update()
            event = g.getevent()
            if event == "key q none":
                # Interrupt the search
                with open(seedFile, 'a') as rF:
                    rF.write('The last seed is %d\n' % (seed))
                break
            g.new('')
            
except IOError:
    g.note('Failed to open results file %s or %s for writing!' % (resultsFile_oscillators, resultsFile_spaceships))
    raise
except Exception as e:
    raise
finally:
    g.new('Search result')
    g.putcells(origPatt)
    if lastRule:
        g.setrule(lastRule)
        g.show('%d results found after testing %d candidate rules.' % (Nfound, ii))
    else:
        g.setrule(origRule)
        g.show('No results found after testing %d candidate rules.' % ii)

Sadly, I may not have time to debug it later on.

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

Re: Smallest Spaceships Supporting Specific Speeds (5s) Project

Post by LaundryPizza03 » September 27th, 2022, 1:58 am

Very large (72,39)c/1707 with 9426 cells, possibly suboptimal but it is difficult to tell due to the very high period of the engine and the intermediate spaceship:

Code: Select all

x = 5364, y = 4514, rule = B3-cjn4jkqtz5cjy6ci/S2-ci3-aey4cei5ae6i
7bo$6bobo$5bo3bo$5b2ob2o22$17b3o$16bo3bo$16b2ob2o2$22b2o$21b2ob2o$22bo
2bo$25bo$23b2o4$7b2o2$3b2obo$3b3obo70b3o$5b2o7b3o60bo3bo$6b2obo4bobo
60b2ob2o$6bo2bo4b3o$7b3o3b4o$12b2obo7b2o$13b3o7bobo$14bo10bo$23bobo$
23b2o4$4bo$3b3o$4ob2o$ob4o$4o3$24b2ob2o$24bo3bo$25bobo$26bo3$33bo$33b
2o$34b2o2$36bo$27b3o6b3o$25b2o2bo8bo$24b2o2b2o7b2o$25bobo$26bo$28b3o$
28b2o2bo$29b2o120bo$30b2o118bobo$28b2o119bo3bo$27b2o2bo117b2ob2o$27b3o
$25bo$24bobo$23b2o2b2o7b2o$24b2o2bo8bo3b2ob2o$26b3o6b3o3bo3bo$35bo6bob
o$43bo$33b2o$32b2o11b3o$32bo11bo3bo$44b2ob2o25$222b3o$221bo3bo$221b2ob
2o36$295bo$294bobo$293bo3bo$293b2ob2o37$366b3o$365bo3bo$365b2ob2o36$
439bo$438bobo$437bo3bo$437b2ob2o37$510b3o$509bo3bo$509b2ob2o36$583bo$
582bobo$581bo3bo$581b2ob2o5$256b3o$250b3o3bo2b2o$248b2o2bo3b2o2b2o$
247b2o2b2o5bobo$248bobo8bo$249bo5$274bo$273b3o$272b2o3bo$273b2o2b2o$
274b2obo$276bo3$262b2o$261b4o$260b2ob2o$261b6o$263bo$263b3o$264bo8$
654b3o$653bo3bo$653b2ob2o5$266b2ob2o$266bo3bo$267b3o2$271bo$270bobo$
269bo3bo$269b2ob2o24$727bo$726bobo$725bo3bo$725b2ob2o37$798b3o$797bo3b
o$797b2ob2o36$871bo$870bobo$869bo3bo$869b2ob2o37$942b3o$941bo3bo$941b
2ob2o36$1015bo$1014bobo$1013bo3bo$1013b2ob2o37$1086b3o$1085bo3bo$1085b
2ob2o28$512b3o$512bobo$512bo2b2o$511b2ob4o$516bo$497bo17bo$496b3o15bo$
481b2o6bo5b2ob2o$479b2ob2o4bobo668bo$479bo2bo4bo3bo666bobo$479bo2bo4b
2ob2o18bo646bo3bo$480b3o13bo660b2ob2o$483bo8b2obo6bo$483b2o7bo9b2o$
483b2o6bo2bo8bo7b3o$490bo2bo10bo5bo2bob2o$491b3o16bo2bobobo$492bo11bo
5b2o4b3o$503bobo7bo2b2o$504bo8bobo$513b3o8$511bo2bo$510bo4bo$509bo5bo$
509bo4b2o$509b2o5$494b3o$488b3o5bo$488bo6b2o$488b2o2$508b2ob2o$508bo3b
o$509bobo$510bo3$1230b3o$1229bo3bo$1229b2ob2o3$513b3o$512bo2bo$512b2o
2bo$512bo4bo$513bobobo$512b2o2bo$500b6o7bo2bo$499bo2bo2bo8bobo$499bo3b
3o8b2o$499bo2bo$500b3o23$1303bo$1302bobo$1301bo3bo$1301b2ob2o37$1374b
3o$1373bo3bo$1373b2ob2o36$1447bo$1446bobo$1445bo3bo$1445b2ob2o37$1518b
3o$1517bo3bo$1517b2ob2o36$1591bo$1590bobo$1589bo3bo$1589b2ob2o37$1662b
3o$1661bo3bo$1661b2ob2o6$724bo$723bobo$722bo3bo$721b2o2bobo$722b2ob2o
2$727bo$724b4o$724bobo$724b3o2b2o2bo$720b2o5b3o2bobo$720bobo4bobo2b2ob
o$713b3o6bo4b3o6bo$712bo2bo4b3o9bo2bo$711bo20b3o3b3o$711bo2bobo16bo3bo
3bo$707bo3b2o2b2o20b2ob2o$707bo2bo3b2o$707bo4$721bo25bo$720b3o23b3o$
717b4ob2o21b2ob4o3b2o$717bob4o23b4obo3bobo$717b4o27b4o4b2o4$1735bo$
762bo971bobo$761b3o969bo3bo$761bob2o968b2ob2o$762b2o$757bo2$754b2o$
753bob2o$754bo2bo$755b4o$746b3o5b2o2bo$746bobo6b3o$746bobo7bo$744b2ob
2o$744bo3bo$744bo3bo$745b3o23$778b2ob2o1023b3o$777bo2b3o1022bo3bo$777b
o1027b2ob2o$778bo$777b2o$777b2o9$760b3o$760bo6bo$760bobobo2bo$761b3obo
$763b2o$764b2o$764b2o18$1879bo$1878bobo$1877bo3bo$1877b2ob2o37$1950b3o
$1949bo3bo$1949b2ob2o36$2023bo$2022bobo$2021bo3bo$2021b2ob2o37$2094b3o
$2093bo3bo$2093b2ob2o36$2167bo$2166bobo$2165bo3bo$2165b2ob2o37$2238b3o
$2237bo3bo$965b3o1269b2ob2o$965bobo$963b2o2bo$966bo$965b2o2b3o$961b2o
4bo3bo$959b2ob2o3bo3bo$959bobo5b4o$959b3o2bobo$965bo4$975b4o$962b3o9b
2ob2o$961bo2bo10bo2bo$961bo5b2o7b3o$961bobo4b2o7bo$962b3obobo$967bo$
966bo9$988bo$986b2obo$985b2o2b2o$984b2o3bo$985b3o$986bo2$2311bo$2310bo
bo$2309bo3bo$2309b2ob2o5$992b2ob2o$992bo3bo$993bobo$994bo2$996b3o$995b
o3bo$995b2ob2o25$2382b3o$2381bo3bo$2381b2ob2o36$2455bo$2454bobo$2453bo
3bo$2453b2ob2o37$2526b3o$2525bo3bo$2525b2ob2o36$2599bo$2598bobo$2597bo
3bo$2597b2ob2o26$2520b3o$2520bobo$2519bobo$2519b2o$2517bobo$2516b3o$
2515bobobo$2516bobo$2516b2obo$2516b2o$2512b6o$2512bo3b2o152b3o$2514b3o
152bo3bo$2515bo153b2ob2o2$2507b2o$2506bo13b2o$2506bo2bo9b2ob2o$2506b2o
b2o9bo2bo$2508b2o13bo$2521b2o2$2514bo$2513b3o$2513bo3bo2b2o$2514bo2bo
2bobo85bo$2514b3o4b2o84bobo$2606bo3bo$2606b2ob2o8$2513b3o4b2o$2513bo2b
o2bobo$2512bo3bo2b2o$2512b3o$2513bo3$2507b2o$2505b2ob2o$2505bo2bo$
2505bo$2506b2o2$2514bo228bo$2513b3o226bobo$2511bo3b2o224bo3bo$2511b6o
224b2ob2o$2515b2o$2515b2obo$2515bobo$2514bobobo$2515b3o$2516bobo$2518b
2o10bo$2518bobo8b3o$2519bobo7bo2bo$2519b3o5b2o3b2o$2526b2o3b2o$1211bo
1315bo2bo$1210b3o1315b3o148b3o$1210bo2bo1315bo148bo3bo$1210bo2b2o1463b
2ob2o$1207bo4b2o$1207bo3bo$1208b2o2$1200bo$1199b2o$1198b2obo$1199bob2o
$1200bobo$1201bo4$1208bo7b2o$1207b3o6bobo$1206bo2b2o8bo$1206b2o8bobo$
1205bobo8b2o$1206b2o$1206bo2bobo2$1201bo1612b3o$1199b2ob2o1609bo3bo$
1198bob3o1610b2ob2o$1197b2o$1198b2o3bo$1199bo$1203bo$1217b2ob2o$1217bo
3bo$1218b3o2$1222bo$1221bobo$1220bo3bo$1220b2ob2o1527bo$2751bobo$2750b
o3bo$2750b2ob2o9$1228b2o$1228bobo$1231bo$1228bobo$1228b2o5$1238b2o$
1238b2o2bo2$2887bo$2886bobo$1236b3o1646bo3bo$1236bobo1646b2ob2o$1237b
2o12$1229b5o1589b3o$1232b2o1588bo3bo$1229bo1592b2ob2o$1229bo2bo$1232bo
$1228b2o$1228b5o16$1239bo$1237b3o$1237b2o1719b3o$1238bo1718bo3bo$1239b
o1717b2ob2o4$1227bo$1228bo2$1225b2obo$1226b3o4$2896bo$2895bobo$2894bo
3bo$2894b2ob2o15$2705b3o$2705bobo$2703b2o2bo$2706bo$2705b2o2b3o$2701b
2o4bo3bo$2699b2ob2o3bo3bo319bo$2699bobo5b4o319bobo$2699b3o2bobo322bo3b
o$2705bo323b2ob2o4$2715b4o$2702b3o9b2ob2o$2701bo2bo10bo2bo$2701bo5b2o
7b3o$2701bobo4b2o7bo$2702b3obobo$2707bo$2706bo2$2967b3o$2966bo3bo$
2966b2ob2o5$2728bo$2726b2obo$2725b2o2b2o$2724b2o3bo$2725b3o$2726bo10$
2732b2ob2o$2732bo3bo$2733bobo366b3o$2734bo366bo3bo$3101b2ob2o$2736b3o$
2735bo3bo$2735b2ob2o9$3040bo$3039bobo$3038bo3bo$3038b2ob2o21$3175bo$
3174bobo$3173bo3bo$3173b2ob2o13$3111b3o$3110bo3bo$3110b2ob2o22$3246b3o
$3245bo3bo$3245b2ob2o12$3184bo$3183bobo$3182bo3bo$3182b2ob2o16$1448bo$
1446bo2bo$1445bo4bo$1445bo2bobo$1445b4o$3319bo$3318bobo$3317bo3bo$
3317b2ob2o3$1464b2o$1464bobo$1464bobo$1464b3o$1460b2o$1460b2o3$1458b2o
2bo$1458bo2b2o$1458bo3bo1792b3o$1459b3o1792bo3bo$3254b2ob2o3$1455bo$
1456bo$1452b2ob2obo$1452bo2b2o$1452b2o2bo$1453b3o8$1459b2ob2o$1459bo3b
o21bo$1460bobo21b3o$1461bo22bo2bo$1482b2o3b2o$1481b2o3b2o$1448b3o31bo
2bo1904b3o$1448bobo32b3o1903bo3bo$1444bobo3bo22b3o8bo1904b2ob2o$1445bo
27bobo$1446bo26bobo$1450b2o19b2o4b2o$1450b2o16b4ob3o2bo$1452b2o12bob4o
bo4bo$1452b2o11bo2b4o$1452bo11bobobobo$1451bo2bo8b2o5bo$1452b3o9b2ob2o
$1453bo14bo$1436b2obo28bo$1436bo3bo26b2o1859bo$1436b2o29b3o1857bobo$
1437bo1888bo3bo$3326b2ob2o2$1464b3o$1464bobo$1465b2o6$1448bo$1446bobo
6bo$1457bo9$3463bo$3462bobo$3461bo3bo$3461b2ob2o13$3399b3o$3398bo3bo$
3398b2ob2o22$3534b3o$3533bo3bo$3533b2ob2o3$2951bo$2950b3o$2950bo2bo$
2950bo2b2o$2947bo4b2o$2947bo3bo$2948b2o2$2940bo$2939b2o531bo$2938b2obo
529bobo$2939bob2o527bo3bo$2940bobo527b2ob2o$2941bo4$2948bo7b2o$2947b3o
6bobo$2946bo2b2o8bo$2946b2o8bobo$2945bobo8b2o$2946b2o$2946bo2bobo2$
2941bo$2939b2ob2o$2938bob3o$2937b2o$2938b2o3bo$2939bo$2943bo$2957b2ob
2o$2957bo3bo645bo$2958b3o645bobo$3605bo3bo$2962bo642b2ob2o$2961bobo$
2960bo3bo$2960b2ob2o10$3543b3o$3542bo3bo$2968b2o572b2ob2o$2968bobo$
2971bo$2968bobo$2968b2o5$2978b2o$2978b2o2bo4$2976b3o$2976bobo$2977b2o
6$3678b3o$3677bo3bo$3677b2ob2o4$2969b5o$2972b2o$2969bo$2969bo2bo$2972b
o$2968b2o$2968b5o2$3616bo$3615bobo$3614bo3bo$3614b2ob2o11$2979bo$2977b
3o$2977b2o$2978bo$2979bo4$2967bo$2968bo$3751bo$2965b2obo781bobo$2966b
3o780bo3bo$3749b2ob2o13$3687b3o$3686bo3bo$3686b2ob2o22$3822b3o$3821bo
3bo$3821b2ob2o12$3760bo$3759bobo$3758bo3bo$3758b2ob2o$1709bo$1695b3o
10bobo$1681b3o11bobo9bo3bo$1681bobo11b3o8b2o2bobo$1681b3o14bobo6b2ob2o
$1678bobo18bobo$1677bobo22bo9bo$1676bo23b3o6b4o$1676b3o10b2o10bo7b3o$
1677bo9b3obo$1690bobo2b3o12b3o$1681b3o2bobo5b2o2bo11b4o$1680bo2bobo3bo
5bo2bo14bo$1680bo6bo8b3o$1680bo5bo21b2ob2o$1707b2o2bobo$1681b2ob2o22bo
3bo$1682b3o3bo20bobo$1683bo3b2o21bo$1686b2o$1687b2o2206bo$1688bo2205bo
bo$3893bo3bo$3893b2ob2o4$1699b3o$1697bo3bo3b2o$1701b2obobo$1696bo3bo3b
o$1696bo3bobobobo$1699b2o4b2o$1697bo2bo$1698b3o$1699bo$3831b3o$3830bo
3bo$1724bobo2103b2ob2o$1723b2obo$1726bo2$1727bo$1721b2o$1722b2o$1723bo
10$1716bo$1716bo$1714b2ob2o$1716bo$1716bo$3966b3o$1717b2o2246bo3bo$
1716bo2248b2ob2o$1716b2ob2o$1717bo2bo$1720bo$1718b2o5$1712bob2o$1713bo
4bo4b2o$1717b3o3bobo$1715bobob2o3b2o2178bo$1716b2obo2183bobo$1716bobo
2183bo3bo$1717bo2184b2ob2o5$1716b2o$1716b3o$1715b5o$1718bo2$1712bo$
1710b3o$1710b3o$1711b3o$1712bo7$4039bo$4038bobo$4037bo3bo$4037b2ob2o
13$3975b3o$3974bo3bo$3974b2ob2o7$3188bo$3186bo2bo$3185bo4bo$3185bo2bob
o$3185b4o7$3204b2o$3204bobo$3204bobo$3204b3o$3200b2o908b3o$3200b2o907b
o3bo$4109b2ob2o2$3198b2o2bo$3198bo2b2o$3198bo3bo$3199b3o4$3195bo$3196b
o$3192b2ob2obo$3192bo2b2o851bo$3192b2o2bo850bobo$3193b3o850bo3bo$4046b
2ob2o7$3199b2ob2o$3199bo3bo21bo$3200bobo21b3o$3201bo22bo2bo$3222b2o3b
2o$3221b2o3b2o$3188b3o31bo2bo$3188bobo32b3o$3184bobo3bo22b3o8bo$3185bo
27bobo$3186bo26bobo$3190b2o19b2o4b2o$3190b2o16b4ob3o2bo$3192b2o12bob4o
bo4bo$3192b2o11bo2b4o971bo$3192bo11bobobobo971bobo$3191bo2bo8b2o5bo
970bo3bo$3192b3o9b2ob2o972b2ob2o$3193bo14bo$3176b2obo28bo$3176bo3bo26b
2o$3176b2o29b3o$3177bo3$3204b3o$3204bobo$3205b2o3$4119b3o$4118bo3bo$
4118b2ob2o$3188bo$3186bobo6bo$3197bo19$4254b3o$4253bo3bo$4253b2ob2o12$
4192bo$4191bobo$4190bo3bo$4190b2ob2o21$4327bo$4326bobo$4325bo3bo$4325b
2ob2o13$4263b3o$4262bo3bo$4262b2ob2o14$1947b3o$1946bo3bo$1946bo3bo$
1949b2o3$1947b4o$1949b2o$1916b3o28bo2bo2447b3o$1916bobo30bo2447bo3bo$
1918bo29bo2448b2ob2o3$1911b2o$1911bo10b3o$1911b3o10bo$1906b3o14b2o7bo$
1906bobo22bobo$1906b3o21bo3bo$1917bo12b2ob2o$1902b3o2bo9bobo$1902bo3bo
10b3o$1902bo16b2o13bo2401bo$1903b3o13bobo11bobo2399bobo$1922bo9bo2401b
o3bo$1921b2o9b2o2400b2ob2o2$1915bo23bo8b2o$1914b2obo19bob2o7bobo$1915b
2o21b2o11bo$1916bo21bo9bobo$1948b2o3$1941bo$1942bo$1942b4o$1943bobo$
1944bo12b3o$1935b2o4b3o9bo5bo$1935bo5b3o9bob2o2bo$1935bobo17b4o$1936b
2o3b2o11b3o$1940b2o$1940bo2$4471bo$4470bobo$4469bo3bo$4469b2ob2o5$
1943b2ob2o$1943bo3bo$1944bobo$1945bo2$1947b3o$1946bo3bo$1946b2ob2o$
4407b3o$4406bo3bo$4406b2ob2o22$4542b3o$4541bo3bo$4541b2ob2o12$4480bo$
4479bobo$4478bo3bo$4478b2ob2o21$4615bo$4614bobo$4613bo3bo$4613b2ob2o7$
3449bo$3435b3o10bobo$3421b3o11bobo9bo3bo$3421bobo11b3o8b2o2bobo$3421b
3o14bobo6b2ob2o$3418bobo18bobo$3417bobo22bo9bo1098b3o$3416bo23b3o6b4o
1097bo3bo$3416b3o10b2o10bo7b3o1098b2ob2o$3417bo9b3obo$3430bobo2b3o12b
3o$3421b3o2bobo5b2o2bo11b4o$3420bo2bobo3bo5bo2bo14bo$3420bo6bo8b3o$
3420bo5bo21b2ob2o$3447b2o2bobo$3421b2ob2o22bo3bo$3422b3o3bo20bobo$
3423bo3b2o21bo$3426b2o$3427b2o$3428bo6$3439b3o$3437bo3bo3b2o$3441b2obo
bo$3436bo3bo3bo1241b3o$3436bo3bobobobo1238bo3bo$3439b2o4b2o1238b2ob2o$
3437bo2bo$3438b3o$3439bo3$3464bobo$3463b2obo$3466bo2$3467bo$3461b2o$
3462b2o1160bo$3463bo1159bobo$4622bo3bo$4622b2ob2o8$3456bo$3456bo$3454b
2ob2o$3456bo$3456bo2$3457b2o$3456bo$3456b2ob2o$3457bo2bo$3460bo$3458b
2o2$4759bo$4758bobo$4757bo3bo$3452bob2o1301b2ob2o$3453bo4bo4b2o$3457b
3o3bobo$3455bobob2o3b2o$3456b2obo$3456bobo$3457bo5$3456b2o$3456b3o$
3455b5o1235b3o$3458bo1235bo3bo$4694b2ob2o$3452bo$3450b3o$3450b3o$3451b
3o$3452bo17$4830b3o$4829bo3bo$4829b2ob2o12$4768bo$4767bobo$4766bo3bo$
4766b2ob2o21$4903bo$4902bobo$4901bo3bo$4901b2ob2o13$4839b3o$4838bo3bo$
4838b2ob2o11$2169b3o$2172bo$2171b2o$2168b2o$2159bo7bo$2158b3o$2157bo2b
o$2156b2obo$2157b2o$2158bo2$4974b3o$4973bo3bo$2170b3o4bo2795b2ob2o$
2170bo2bo$2159bo10bo2bobobo$2158b2o15b2o$2159b2o11b2o$2171bo$2172b2o5$
2169bo$2168b3o2741bo$2167bo2bo2740bobo$2166b2o2bo10b3o2726bo3bo$2167bo
3bob3o4bo2bo2726b2ob2o$2173bobo4bo3bo$2168bo2bob2o7b3o$2167bobo13bo2$
2155bo$2154b3o31b2o$2154bob2o29b2ob2o$2152b2o2bobo18bo10bo2bo$2151b2o
4b3o16b2o13bo$2152b3o4b2o28b2o$2153bobo2b2o$2154b2obo24bo$2145bo9b3o
23b3o$2144b3o9bo18b3o3bo3bo$2143bo2bo2bo12b2o10bo3bo3bo2bo$2142b2obo2b
o2bo10bobo9b2ob2o3b3o$2143b2o18b2o$2144bo4bo2bo$2151bo$2176bo$2175b3o
2869bo$2175bo2bo2867bobo$2177bobo2865bo3bo$5045b2ob2o$2179bo$2178b3o$
2177bo2bo$2177b3o3$2175b2o$2175bobo$2177bo$2175bobo$2175b2o2$4983b3o$
4982bo3bo$4982b2ob2o6$2174b2o$2174bobo$2176bo$2174bobo$2174b2o3$2176b
3o$2176bo2bo$2177b3o$2178bo2$2176bobo$2174bo2bo$2174b3o$2175bo$5118b3o
$5117bo3bo$5117b2ob2o12$5056bo$5055bobo$5054bo3bo$5054b2ob2o5$3687b3o$
3686bo3bo$3686bo3bo$3689b2o3$3687b4o$3689b2o$3656b3o28bo2bo$3656bobo
30bo$3658bo29bo3$3651b2o$3651bo10b3o$3651b3o10bo$3646b3o14b2o7bo1518bo
$3646bobo22bobo1516bobo$3646b3o21bo3bo1514bo3bo$3657bo12b2ob2o1514b2ob
2o$3642b3o2bo9bobo$3642bo3bo10b3o$3642bo16b2o13bo$3643b3o13bobo11bobo$
3662bo9bo$3661b2o9b2o2$3655bo23bo8b2o$3654b2obo19bob2o7bobo$3655b2o21b
2o11bo$3656bo21bo9bobo$3688b2o$5127b3o$5126bo3bo$3681bo1444b2ob2o$
3682bo$3682b4o$3683bobo$3684bo12b3o$3675b2o4b3o9bo5bo$3675bo5b3o9bob2o
2bo$3675bobo17b4o$3676b2o3b2o11b3o$3680b2o$3680bo10$3683b2ob2o$3683bo
3bo$3684bobo1575b3o$3685bo1575bo3bo$5261b2ob2o$3687b3o$3686bo3bo$3686b
2ob2o9$5200bo$5199bobo$5198bo3bo$5198b2ob2o13$5313b2o$5315bo$5318b3o$
5320bo$5318b3o$5246b2o$5245bobo$5245bo60b3o$5245bobo56b2o2b2o$5246b2o
10bo45bo3b2o$5257b2o45b6o10bo$5257bo61bobo$5247b3o5b3o62bo$5254b2obo
62b2o26b2o$5254bo93bobo$5248bo5bo2b2o57bo34bo$5254bo5bo52bo2bo31bobo$
5262bo48b3ob2o31b2o$5260bobo48b2o$5259bobo12bo35b2o4bo$5254bo3bo14b3o
35bobob2o$5255bobo14b2obo36b2o2bo$5256b2o10b3obo3bo37b2o$5268bo2bobo2b
2o$5268bob2o4bo44bo27bo$5271bo4bo46bo24b3o$5267bo3bob2o48b2o25b2o$
5232bo4bo84b2o25b2obo$5232bo2b4o80b2obo28b3o$5232b2o4bo91b4o10bo6bob2o
$5235bobo95b2o8b2obo6bo$5235bobo95bo10b3o$5235b3o107bob2o10bo$5328bo
17b2o10b3o$5326b2o19b3o10bo$5327b3o11b2o5bo8b6o$5328bo11bobo19b2o$
5270b3o67b2o18bobo$5270bobo88bo$5270b3o$5270b4o$5254b3o14bob2o$5254bo
2bo6bo6b3o$5252b2o10b2o6bo$5252bo2b2ob2o3bob2o$5252bob2o2bo12bo$5253b
3o7bo4bob3o$5263b2o3bobob2o$5267b2ob3o$5264bo3bo2bo$5263b2o4bobo$5260b
4o5b3o$5260bobo$5260b3o2$5250bo3b2o$5245b3ob4ob2o$5245b3obo$5250bo$
5249bo$5249b2o2$5245b3o2b2o$5244bo2bo4bo$5198b2ob2o40b2o4bo2bo2bobo$
5198bo3bo41bo3b2obo4b3o$5199b3o44bobo9b2o$5246b2ob2ob3obobo$5248bob2o
3bobo3bo$5249bo5b2o3b3o$5252b2o6b2o$5262b3o$5264b2o$5264bo2$5245b2ob2o
8bo$5245bo3bo7b2o$5246bobo8bo$5247bo10bo2bo$5258b3o$5259bo10$2400b3o$
2400bobo$2400b3o$2399b4o$2398b2obo$2398b4o$2396b3obo$2395bobo$2395bo$
2395bobo$2396b2o3$5298bob2o$5297b5o$2409b2o2885b2o$2409bobo2885b2o$
2411bo2832b2o52bo$2409bobo2831bobo$2409b2o2832bo$2400b3o2584bo255bobo$
2400bobo2583b3o255b2o$2402bo2582bo2bo$2403bo2585bo$2402bobo2580bo2bobo
$2395b2o2588b2obo323b3o31b2o$2395bo2588b2ob2o323bo2bo30bobo$2395b3obo
2585b3o323bo3bo33bo$2398bo2587bo324bo18bo15bobo$2399bo2537b3o54bo316bo
b2o11bo3bo15b2o$2410b2ob2o2521bo3bo52b3o315b3o12bo2bob2o$2410bo3bo14bo
2506bo3bo51bo2b2o313b2o14bo4bo$2411bobo11bo2b3o2506bob2o50b2o2bo314bo
16bo3bo$2412bo13bo4bo12b3o2545b3o264b2o50bo16bo$2425bo5b2o10bo2bo2546b
o264b2obo$2429b3o2499b2o326b3o$2426bobo12bo3bo2484bobo309b3o15bo51b3o$
2441bo2488bo311bo2b3o64b3o$2426b3o12b3o6b2o2478b3o54b2o253bo2bo65b2o$
2426bobo19bo2bo2484b3o47bobo254b2o66bo$2427b2o22bo2483bo2bo47b2o$2423b
2obo20bob2o2484bo2bo321b3o49b2ob2o$2423bo2bo19bo2488b3o321bo3bo47bobo
2b2o21b3o$2424b3o18bo2813bo2b2o48bo3bo22bobo$5259b2o2bo49bobo23b3o$
5314bo27bobo$5343bobo$2442bo2818b2o83bo$4933bo327b2o81b3o$2404b2o19bo
2506b3o309bo20b3o77bo$2401bob2obo2524b2ob2o49b2o256b3o19bobo66b2o$
2400bo3bobo4bo10bo2508bo2bo50bobo254b2ob2o5bo12bobo62bo2bob2o2b3o$
2399bobo3b2o3bo10bob4o2502b4obobobo47b2o254bo8bobo11b2o62bo7bobo2bo$
2398b2o9b2o10b3obo2b2o2498b2o3b2o312bo2b2o2b2o79bo6bo$2399b2o7b2obo17b
o2504bo5bo306bo3b2o2bo80bo5bo$2409b3o12bo4b2o2510b2o301bo2bo5b3o$2410b
o13bo4bo2509b2ob3o8bo38bo251b3o90b2ob2o$2426bobo2510bob2obo6bo39b3o
242b2o100b3o$2427bo2510bo3b3o7b3o35b2o2bo240b2o102bo$4941bo11b2o36bo2b
2o238b2o4b2o11bo$4940bo51b3o240b2o4bo7bobob5o$4993bo242bo4bo8b2o2b2obo
$4985bo252b3o7bo2bo3b3o$4984b3o260b2obo$4983b2ob2o$4984b2obo$4984bo2bo
bo256bo2b2o4b3o$4988bo256b3ob2o6bo$4929b2o53bo2bo264b2o2b2o$4929bobo
53b3o264bo2bo$4932bo20b3o30bo266b3o$4915b3o11bobo24bo$4914bo3bo10b2o
25b2o$4914b2ob2o37bo$4954bo295b3o$4953b2o295bo2b2o$5250b2o2b2o$4947bo
3bo300bobo$4899b3o44b2obo303bo$4899bobo17b2o26b4o293b2o$4898bo2bo15b2o
3bo25b5o291b2obo$4898bo2bo15bo2bobo28b3o293bo$4898b4o15bo3bo30bobo292b
o$4899b3o16b2o35bo289bobo$2418bo2487bo2bo15b2o24bo2bo288b2o2bo$2417bo
38bo2448bo3bo14bo26b3o290b3o$2415b2o2b2o10b2o24bo2447bo3bo15bobo24bo
292bo$2414b2o3b2o9bobo9b2o10b2o2b2o2445bo2bo14bo3bo$2415b2ob3o9b2o10bo
bo9b2o3b2o2445b3o14bo2bo$2416bo3b4o19b2o9b3ob2o2464b3o$2422b2o27b4o3bo
$2451b2o$2424bo$2422b3o25bo$2423bo26b3o$2451bo24$4803bo$4802bobo$4801b
o3bo$4801b2ob2o11$3909b3o$3912bo$3911b2o$3908b2o$3899bo7bo$3898b3o$
3897bo2bo$3896b2obo$3897b2o$3898bo4$3910b3o4bo$3910bo2bo$3899bo10bo2bo
bobo$3898b2o15b2o$3899b2o11b2o$3911bo$3912b2o5$3909bo$3908b3o$3907bo2b
o963b3o$3906b2o2bo10b3o949bo3bo$3907bo3bob3o4bo2bo949b2ob2o$3913bobo4b
o3bo$3908bo2bob2o7b3o$3907bobo13bo2$3895bo$3894b3o31b2o$3894bob2o29b2o
b2o$3892b2o2bobo18bo10bo2bo$3891b2o4b3o16b2o13bo$3892b3o4b2o28b2o$
3893bobo2b2o$3894b2obo24bo$3885bo9b3o23b3o$3884b3o9bo18b3o3bo3bo$3883b
o2bo2bo12b2o10bo3bo3bo2bo$3882b2obo2bo2bo10bobo9b2ob2o3b3o$3883b2o18b
2o709b3o$3884bo4bo2bo720bo3bo$3891bo721b2o2bo$3916bo696bo2b2o$3915b3o$
3915bo2bo692bobo$3917bobo692bo2bo$4609bo3b3o$3919bo690bo3bo7b3o$3918b
3o684b3obobo10bo2bo$3917bo2bo683bobo4b2o5b2o5bo$3917b3o684bo5b2o5b2o4b
obo7bo$4604bo2bo10bobob3o7b3o26bo$4605b3o11bo11b2o27b3o$3915b2o703b3o
8b3o2b2o24b2o$3915bobo704b2o7b2o24b2o2b3o$3917bo703bobo2b2o2b2o7b3o20b
2o$3915bobo688b3o12bo3b2o2b3o2b2o6bo10b3o7b2o2b2o$3915b2o691b2o11bobo
2bo3bo6b3ob2o9bo6b2o2b3o2b2o$4605bo3bo12b2o3bobo22b2ob3o6bo3bo278bo$
4594b4o30bo36bobo278bobo$4580b2o8bo2bo2b2o7bo60bo278bo3bo$4580b2o8bo2b
o9bo341b2ob2o$4590bo2bo8b6o$4592b2o7b2o3bo$4602b2obo$4603b3o$4605bo$
3914b2o689b2o$3914bobo689bo16b2o$3916bo705bobo$3914bobo667bo32bo4b2o$
3914b2o667b3o30b3o$4582bo2b2o29bo$4581b2ob2o9b3o$3916b3o663b2o2bo6b2o
2bo$3916bo2bo666b2o6b3o25bo$3917b3o665bob2o6bo15b2o9b2o$3918bo666b3o
22b2o9b2o$4586bo24bo154bo$3916bobo846bobo$3914bo2bo846bo3bo$3914b3o
700bo146b2ob2o$3915bo699b3o$4616bo3$4619b2o$4618b2obobo$4619b2o2bo$
4623b2o$4622bob2o$4622b3o$4623bo6$5018b3o$5017bo3bo$5017b2ob2o18$4837b
3o$4836bo3bo$4836b2ob2o17$5068b3o$5067bo3bo$5067b2ob2o2$5121bo$5120b3o
$5119bo2b2o$5119b3o17b3o$5138bo3bo$5101b2ob2o32b2ob2o$5101bo3bo21b3o$
5102b3o22bobo$2646bo2480bo2b2o$2645b3o2483bo$2644b2ob2o2475bo4b3o$
2647b2o2475b2o$2643b3o2bo2476b2o$2642b2o3b2o2477bo$2643bobobo$2644bobo
2263bo$2645bo2263bobo108b3o$4908bo3bo107bo2bo$4908b2ob2o$4275b3o743bo
3bo$4275bo2bo747bo$4275bo739b2o6bo2bo$2656b2o1617bo739bo2bo6b2o$2657b
2o2356bo109bo36b2ob2o$2656b2o1618b2o738bo3bo102bobo36bo3bo$2646bo1631b
o750b3o90bob2o37bobo$2645bobo6bo2363bo2bo7bo2bo73b2o7b2o5bo10b2obo27bo
$2641bo2bo7b3o2364b3o84bobo14bo10b4o$2640bo2b3o7bo1584b3o789bo3bo74bo
27b2o$2639bo1598bobo4bo20bo768bo74bo3bo21b2o15bo$2638bo12bo1587bo5b2o
18bobo29b2o725b2o6bo2bo75bobo15bo18b2o2bo3bo$2638bo1603b3ob2o16bo3bo
27bobo725bo2bo6b2o75b2o16b2o16b2o2bo4b2o$4241b3obo18b2ob2o27bo727bo76b
2o27bo17bo4bo2bobo$2642bobob2o1595bo47b2o3bobo726bo3bo70bobo21b3o2b2ob
o16bob2o4b2o$2644bo2bo4bo1638bobo3b2o804bo22bo3b3o17bo2bo2bo$2644b2obo
4bo1641bo732bo2bo62b2o4bo4bo19b2o5bo21bo2bo$2645b2o7bo1619bo16bobo734b
3o63b4obo5b2o38bo8b3o$2645bo5bobo1621bo3bo11b2o803bo9bo38b3o$2640bo5bo
4b2o1612bo9bo2b3o815bo2bo5bo39bobo$2640bob2o2bo1617b3o10b2o2bo818bob2o
15b2o5b2o17b3o$2645b2o1616b2obo11bo2b2o835b2o7bobo$2643bo1635bobo820bo
26b2o$2638b2o3bo2456b3o20b2obo2bo$2639bo3bo1636bo821bo20b3obo$5102b2o
22b3o$2635b2o2b3o1635b3o823bo22b3o$2637bo1617b2o20bo$4254bobo4b2o$
2626bobobo1622bo7b2o$2629bo22b2ob2o3b3o1591bobo$2632bo19bo3bo3bo2bo
1591b2o$2631b2o20b3o7bo$2627bobobo31bo2175bo$2628bobo2194bo$2629bo31bo
2b2o1585b3o584b2o$2663b2o1540b3o43bo2bo570b2o10b2o12b3o127b3o$2662b2o
1540bo3bo41bo3bo571b2o9b2o2b3o7bobo126bo3bo$4204b2ob2o41b3o568b3o2b2o
9bo5bo9bo126b2ob2o$4251bo569bo5bo7b3obo3bo$2660b2o2159bo3bob3o5bo2bo2b
2o$2660bobo2159b2o2bo2bo5b2o$2663bo1581b2o581b2o7bobo14bo$2660bobo
1580b2ob2o9bo567bobo9b3o12bobo$2660b2o1581bo2bo578b3o24b3o$4243bo$
4244b2o$4263b2obo$4252bo11b3o$4251b3o11bo568b3o$4188b2o59bo3b2o579bo2b
o$4187bobo59b6o579bo2bo$4187b2o64b2o577b2o3b2o$4253b2obo575bobobobo$
2659b2o1592bobo577b2ob2o$2659bobo1590bobobo577bo$2662bo9b2o1579b3o$
2659bobo9bobo1580bobo587bo$2659b2o10b2o1583b2o584b3o$4256bobo581b4o$
2674bo1582bobo581bobo$2661b2o10bobo1581b3o581b3o$2662b2o8bo3bo$2660bo
2b2o7b2ob2o2$2662bo$2662bo$2659bo2bo$2659b3o4$4844b2ob2o$4844bo3bo$
4278bo566bobo$4277bobo566bo$4276bo3bo$4276b2ob2o567b3o217b3o$4847bo3bo
215bo3bo$4847b2ob2o215b2ob2o5$5139b3o$5121b2o15bo3bo$5101b2ob2o14b2o
16b2ob2o$5101bo3bo14bo2bo$5102b3o14b2obo$4260b2o858bo$4259bobo$4259b2o
866b3o$5027b3o97bo2bo$5026bo3bo95b2o2bo$5026b2ob2o99bo$5126bo2bo$5126b
2o6$5123bo$5122b3o$5122bo39b2ob2o$5120b2o2b2o19bobo14bo3bo$5010b2o107b
2o23bobobo14bobo$5009bobo94b2o12b2o23bobo16bo$5009b2o95bobo6bo5bo10b2o
10bobobo$5108bo5b3o16b2o10bobo$5098b2obo3bo2bo4b2obo13bo2bo$5096bo4bo
2bo2bob3obo3bo12b3o19b2o$5096bo4b2o5bo3bobo2b2o12bo19b2ob2o$5095b2o2bo
bo3bo5b2o4bo34bo2bo$4349b3o744bo3bob3obo2bo2bo4bo4b2ob2o8bo19bo$4348bo
3bo744bob2o4bo2bo3bob2o6bo3bo8b3obo13b2o$4348b2ob2o744b3o5bo17bobo10bo
bo$5098bo6bobo16bo$5106b4o29bob3o$5104b2o29b2o6bo$5103b2obo2bo13bo16bo
2bo$4140b3o959b2o5bo12b3o17bo$4140bobo960b2o17bob2o13bo5b3o$4140b3o
962b4o12bo3bob3o9bo2bo2b3o$4139b4o963bo13b2o2bobo2b3o7b2ob2o$3962bo28b
2o145b2obo979bo4b6o9b2o$3961b3o26bobo145b4o979bo4bobob2o$3960bo2b2o25b
o145b3obo982b2obo$3959b2o2bo17b3o151bobo194b2o$3960b3o18bo2bo5bo2bo
141bo195bobo$3961bo18bo3bo6bobo8b2o131bobo193b2o806bo$3982bobo4b3obo9b
2o131b2o999bo$3979bo8b2ob3o$3979bo9b3o$3990bo2$4009bo139b2o$4009b2o
138bobo$3934b2o74bo140bo$3919b2o12bo215bobo$3921bo12bobo212b2o$3918bob
o13bobo203b3o$3918bobo9bobobo205bobo$3920bobobo6bo2b2o206bo$3919b2o2bo
8b3o11b2ob2o192bo$3920b3o10bo12bo3bo191bobo$3921bo3bo21bobo185b2o$
3924b3o19bo2b2o184bo$3924bo2bo22bo184b3obo$3923bo3b2o19b2o188bo$3927b
5o17bo3b2o184bo$3922bo5b2obo17bo4b2o194b2ob2o$3929bo2b2o16bobobo195bo
3bo14bo252bo$3918b2o13bo17bobo197bobo11bo2b3o250bobo$3919bo11b3o18bo
199bo13bo4bo12b3o233bo3bo$3918bob2o6bobo234bo5b2o10bo2bo233b2ob2o$
3919bobo5b2ob2o237b3o$3930bo235bobo12bo3bo$3926bo254bo$3925bo240b3o12b
3o6b2o$3925bo240bobo19bo2bo$3925b2obo238b2o22bo$3927bob2o3b3ob2o223b2o
bo20bob2o$3938b2o223bo2bo19bo$3930b2o232b3o18bo$3931bo5bo$3920bobo7b2o
$3919bob2o4b2o5bob2o466b2o$3920bo6bo8bo245bo220bobo$3919b2o6b2o2bo4bo
466b2o$3931bob2o209b2o19bo$3923bo217bob2obo$3928bo211bo3bobo4bo10bo$
3924bo3b2o209bobo3b2o3bo10bob4o$3925bo2bo209b2o9b2o10b3obo2b2o$3925b3o
211b2o7b2obo17bo$3926bo222b3o12bo4b2o$4150bo13bo4bo$4166bobo$4167bo13$
4493b3o$4492bo3bo$4492b2ob2o11$4158bo$4157bo38bo279b2o$4155b2o2b2o10b
2o24bo277bobo$4154b2o3b2o9bobo9b2o10b2o2b2o275b2o$4155b2ob3o9b2o10bobo
9b2o3b2o$4156bo3b4o19b2o9b3ob2o$4162b2o27b4o3bo$4191b2o$4164bo$4162b3o
25bo$4163bo26b3o$4191bo14$4566bo$4565bobo$4564bo3bo$4564b2ob2o12$4548b
2o$4547bobo$4547b2o2$3631bo$3630b3o$3629b2o$3628bob2o$3627b3o$3626b2ob
o6bo$3627bo6bob2o$3634b3o$3632b2obo$3633b2o$3631b3o$3632bo4$3634b2o$
3639bo$3634b2o$3635b3o$3635b3o2$4637b3o$3600b3o49b3o981bo3bo$3600bobo
39b2o8bo2bo980b2ob2o$3600b4o39bo6b2o3bo$3599b3o40b4o4bo3b2o$3599bo43bo
b2o3bo2bo$3627b2o12b2o2bo5b3o$3609bo17bobo12b3o$3606b2ob2o19bo12bo$
3605bobobobo15bobo$3605b2o3b2o15b2o$3606bo2bo$3606bo2bo$3607b3o$3620bo
23b2o974b2o$3617b2obo25bo972bobo$3616bo2b2o24bobo971b2o$3616bo26bo2bo$
3589b3o41b2o8b3o$3589bobo40bobo9bo$2889bo699bo42bobo$2875bo756b4o$
2888b2o$2875b2o10b2o12b3o$2876b2o9b2o2b3o7bobo686bo$2871b3o2b2o9bo5bo
9bo686bobo$2871bo5bo7b3obo3bo696b3o$2871bo3bob3o5bo2bo2b2o$2872b2o2bo
2bo5b2o$2878b2o7bobo14bo$2875bobo9b3o12bobo$2875b3o24b3o2$3645b3o$
3645b3o2$2884b3o$2884bo2bo$2884bo2bo1822bo$2882b2o3b2o1820bobo$2882bob
obobo1819bo3bo$2883b2ob2o1820b2ob2o$2884bo2$2894bo$2892b3o$2890b4o$
2891bobo$2891b3o3$5091bo$5090b3o$4692b2o396bo2bo$4691bobo400bo$4691b2o
398bobo$5091b2o3$2894b2ob2o2161bo$2894bo3bo2160b3o$2895bobo2160b2o2bo$
2896bo2162bo2b2o$5060b3o$2898b3o2160bo12b3o$2897bo3bo2151bo19bo3bo$
2897b2ob2o2150bo20b2ob2o$5050b2ob3o$5049b2o4b2o$5050bo3bob2o$5051bob4o
$5055bo$5084bob2o$5065b2o7b2o6bo4bo$5062b5o7b5o3bo13bobo$5062bo3bo7bo
3bo2b2obo5b2o4b2obo$5062b2o2b2o5b2o2b2o3bo8bo6bo$5064bo2bo5bo2bo5bo4bo
2b2o6b2o$4781b3o280b3o7b3o7b2obo$4780bo3bo310bo$4780b2ob2o305bo$5089b
2o3bo$5090bo2bo$5091b3o$5092bo3bo$5084bo10b3o$5083b3o8bo2b2o$5082b2o2b
o6bobobo$5083bobobo9bobo$5081bobo13bobo$5081bobo12bo$5084bo12b2o$4764b
2o316b2o$4763bobo$4763b2o2$5076bobo$5062bobo$5077bo$5063bo10bob3o$
5062b3obo7bo3b2o$5061b2o3bo11bo7b2ob2o$5062bo12b3o8bo3bo$5063b3o10bo
10b3o$5064bo12$4854bo$4853bobo$3328b3o1521bo3bo$3328bo2bo1520b2ob2o$
3326b2o3bo1748bo$3326bo3b2o1747b3o$3326bo2bo1749bob2o$3327b3o3$3343bo$
3316bo23bo2bo3bo$3315bobo25bo3bo2bo1727bob2o$3314bo3bo28bo28b2o1700b3o
$3314b2ob2o57b2o1701bo$3376b2o41b3o1414b2o$3418bo3bo1412bobo$3418b2ob
2o1412b2o$3301b2o$3300bobo$3299bo$3295b2o3bobo$3295bobo3b2o$3282bo14bo
1088bo$3281bobo11bobo1087b3o$3280bo3bo10b2o1087b2ob2o$3266bo13b2ob2o
1102b2o$3265b3o1115b3o2bo$3265bo1116b2o3b2o$3402b2o979bobobo$3262b2o
137bobo980bobo$3261b2o138b2o982bo$3262b2o$3279b2o$3278b2o$3279b2o5bo$
3280bo$4396b2o$3274bo1122b2o$3273bobo14bo1105b2o$3272bobobo1109bo538b
3o$3271b2o3b2o1107bobo6bo529bo3bo$3271bo2b3o1104bo2bo7b3o529b2ob2o$
3271b2o1107bo2b3o7bo$3271b2ob2o1103bo$3272b3o14b2obo1085bo12bo$3273bo
16b3o1085bo$3291bo1918b3o$4382bobob2o821bo3bo$4384bo2bo4bo816b2ob2o$
4384b2obo4bo$4385b2o7bo$4385bo5bobo$3492bo887bo5bo4b2o$3491bobo886bob
2o2bo521b2o$3490bo3bo890b2o520bobo$3490b2ob2o888bo523b2o$4378b2o3bo$
4379bo3bo2$4375b2o2b3o$4377bo2$4366bobobo$4369bo22b2ob2o3b3o$4372bo19b
o3bo3bo2bo$4371b2o20b3o7bo$4367bobobo31bo$3474b2o892bobo$3473bobo893bo
31bo2b2o$3473b2o928b2o$4402b2o3$4400b2o$4400bobo$4403bo$4400bobo$4400b
2o596bo208b3o$4997bobo206bo2bo9b3o35bo$4996bo3bo205bo2b2o8bo2bo6bo25b
2obo$4996b2ob2o205b3obo7b2o2bo5bob2o25b3o$5218bob3o4b3o18b2ob2o3b2o2bo
$5207bo18bo2b2o3b2ob2o9bo3bo4bo2b2o$5207bo13bo3b2o2bo4bo3bo10b3o4bo2b
2o$5207bo13bo4b2o2bo4b3o18b3o$5221bo6b3o2$4399b2o$4399bobo$4402bo9b2o$
4399bobo9bobo$4399b2o10b2o$3563b3o1414b2o$3562bo3bo847bo564bobo$3562b
2ob2o834b2o10bobo563b2o$4402b2o8bo3bo$4400bo2b2o7b2ob2o2$4402bo$4402bo
$4399bo2bo$4399b3o5$3546b2o$3545bobo$3545b2o9$5069b3o$5068bo3bo$5068b
2ob2o11$3636bo$2995b2o638bobo1414b2o$2994bobo637bo3bo1412bobo$2994bo
639b2ob2o1412b2o$2989b2o3bobo$2989bobo3b2o$2992bo$2989bobo$2976bo12b2o
$2975bobo$2978bo$2977b2o2225b3o$2973b2o3bo2224bo3bo$2973bo3b4o2222b2ob
2o$2976b3ob2o$2977b2obo637b2o$2976bobo638bobo$3617b2o5$2962b2o$2963b2o
$2962b2o$5142bo$2958bobo2180bobo$2949b3o6b3o2179bo3bo$2949bobo7bo2180b
2ob2o$2948bob3o9bo$2952b2o7b3o$2946b2obo3b2o5bo2bo$2945b2o2b2obo6bo$
2943b3o14bobo$2943bobo14bo2bo$2943b3o12b2obo2bo$2952bo4bo$2951b2o4bo$
2954bo2b3ob3o$2952bo2bo4bobo$2950b3o2bo4b2o745b3o1414b2o$2950b2o2b2o
750bo3bo1412bobo$2950bo2bo752b2ob2o1412b2o118bo$2951b3o2277bo10b3o$
5230b3o8bo2bo$5208b2o20bo2bo6b2ob4o$5207bo20b4ob2o6b2o3b2o$5207bo2bo
16b2o3b2o13b2o$5207b5o14b2o14b2o2b2o$5227b2o2b2o9bo$5232bo$5243b3o$
5229b3o2$3690b2o$3689bobo$3689b2o5$3141bo$3140b3o$3140bo2bo$3144bo$
3141bobo$3141b2o3$3110bo$3109b3o$3108b2o2bo$3109bo2b2o$3110b3o$3111bo
12b3o$3103bo19bo3bo$3102bo20b2ob2o$3100b2ob3o$3099b2o4b2o673bo$3100bo
3bob2o671bobo$3101bob4o671bo3bo$3105bo672b2ob2o$3134bob2o$3115b2o7b2o
6bo4bo$3112b5o7b5o3bo13bobo$3112bo3bo7bo3bo2b2obo5b2o4b2obo$3112b2o2b
2o5b2o2b2o3bo8bo6bo$3114bo2bo5bo2bo5bo4bo2b2o6b2o$2831b3o280b3o7b3o7b
2obo$2830bo3bo310bo$2830b2ob2o305bo$3139b2o3bo$3140bo2bo$3141b3o618b2o
$3142bo3bo614bobo$3134bo10b3o613b2o$3133b3o8bo2b2o$3132b2o2bo6bobobo$
3133bobobo9bobo$3131bobo13bobo$3131bobo12bo$3134bo12b2o$2814b2o316b2o$
2813bobo$2813b2o2$3126bobo$3112bobo$3127bo$3113bo10bob3o$3112b3obo7bo
3b2o$3111b2o3bo11bo7b2ob2o$3112bo12b3o8bo3bo$3113b3o10bo10b3o$3114bo4$
3851b3o$3850bo3bo$3850b2ob2o6$2904bo$2903bobo$2902bo3bo$2902b2ob2o$
3130bo$3129b3o$3129bob2o701b2o$3833bobo$3833b2o4$3128bob2o$3128b3o$
3129bo$2886b2o$2885bobo$2885b2o13$3924bo$3923bobo$3922bo3bo$3922b2ob2o
7$2975b3o$2974bo3bo$2974b2ob2o3$3906b2o$3905bobo$3260b3o642b2o$3259bo
3bo$3259b2ob2o5$2958b2o$2957bobo$2957b2o11$4629bo$4615bo$4628b2o$3995b
3o617b2o10b2o12b3o$3994bo3bo617b2o9b2o2b3o7bobo$3994b2ob2o612b3o2b2o9b
o5bo9bo$4611bo5bo7b3obo3bo$4611bo3bob3o5bo2bo2b2o$4612b2o2bo2bo5b2o$
4618b2o7bobo14bo$4615bobo9b3o12bobo$3048bo208b3o1355b3o24b3o$3047bobo
206bo2bo9b3o35bo$3046bo3bo205bo2b2o8bo2bo6bo25b2obo$3046b2ob2o205b3obo
7b2o2bo5bob2o25b3o$3268bob3o4b3o18b2ob2o3b2o2bo$3257bo18bo2b2o3b2ob2o
9bo3bo4bo2b2o1312b3o$3257bo13bo3b2o2bo4bo3bo10b3o4bo2b2o667b2o644bo2bo
$3257bo13bo4b2o2bo4b3o18b3o668bobo644bo2bo$3271bo6b3o696b2o643b2o3b2o$
4622bobobobo$4623b2ob2o$4624bo2$4634bo$4632b3o$3030b2o1598b4o$3029bobo
1599bobo$3029b2o1600b3o11$4634b2ob2o$4634bo3bo$4068bo566bobo$4067bobo
566bo$4066bo3bo$4066b2ob2o567b3o$4637bo3bo$4637b2ob2o5$3119b3o$3118bo
3bo$3118b2ob2o3$4050b2o$4049bobo$4049b2o7$3102b2o$3101bobo$3101b2o8$
3254b3o$3253bo3bo$3253b2ob2o4$4139b3o$4138bo3bo$4138b2ob2o6$3192bo$
3191bobo$3190bo3bo$3190b2ob2o3$4122b2o$4121bobo$4121b2o7$3174b2o$3173b
obo$3173b2o118bo$3281bo10b3o$3280b3o8bo2bo$3258b2o20bo2bo6b2ob4o$3257b
o20b4ob2o6b2o3b2o$3257bo2bo16b2o3b2o13b2o$3257b5o14b2o14b2o2b2o$3277b
2o2b2o9bo$3282bo$3293b3o$3279b3o3$4212bo$4211bobo$4210bo3bo$4210b2ob2o
12$4194b2o$4193bobo$4193b2o23$4283b3o$4282bo3bo$4282b2ob2o12$4266b2o$
4265bobo$4265b2o22$4356bo$4355bobo$4354bo3bo$4354b2ob2o12$4338b2o$
4337bobo$4337b2o23$4427b3o$4426bo3bo$4426b2ob2o12$4410b2o$4409bobo$
4409b2o22$4500bo$4499bobo$4498bo3bo$4498b2ob2o10$4881bo$4880b3o$4482b
2o396bo2bo$4481bobo400bo$4481b2o398bobo$4881b2o3$4850bo$4849b3o$4848b
2o2bo$4849bo2b2o$4850b3o$4851bo12b3o$4843bo19bo3bo$4842bo20b2ob2o$
4840b2ob3o$4839b2o4b2o$4840bo3bob2o$4841bob4o$4845bo$4874bob2o$4855b2o
7b2o6bo4bo$4852b5o7b5o3bo13bobo$4852bo3bo7bo3bo2b2obo5b2o4b2obo$4852b
2o2b2o5b2o2b2o3bo8bo6bo$4854bo2bo5bo2bo5bo4bo2b2o6b2o$4571b3o280b3o7b
3o7b2obo$4570bo3bo310bo$4570b2ob2o305bo$4879b2o3bo$4880bo2bo$4881b3o$
4882bo3bo$4874bo10b3o$4873b3o8bo2b2o$4872b2o2bo6bobobo$4873bobobo9bobo
$4871bobo13bobo$4871bobo12bo$4874bo12b2o$4554b2o316b2o$4553bobo$4553b
2o2$4866bobo$4852bobo$4867bo$4853bo10bob3o$4852b3obo7bo3b2o$4851b2o3bo
11bo7b2ob2o$4852bo12b3o8bo3bo$4853b3o10bo10b3o$4854bo12$4644bo$4643bob
o$4642bo3bo$4642b2ob2o$4870bo$4869b3o$4869bob2o6$4868bob2o$4868b3o$
4869bo$4626b2o$4625bobo$4625b2o23$4715b3o$4714bo3bo$4714b2ob2o5$5000b
3o$4999bo3bo$4999b2ob2o5$4698b2o$4697bobo$4697b2o22$4788bo208b3o$4787b
obo206bo2bo9b3o35bo$4786bo3bo205bo2b2o8bo2bo6bo25b2obo$4786b2ob2o205b
3obo7b2o2bo5bob2o25b3o$5008bob3o4b3o18b2ob2o3b2o2bo$4997bo18bo2b2o3b2o
b2o9bo3bo4bo2b2o$4997bo13bo3b2o2bo4bo3bo10b3o4bo2b2o$4997bo13bo4b2o2bo
4b3o18b3o$5011bo6b3o7$4770b2o$4769bobo$4769b2o23$4859b3o$4858bo3bo$
4858b2ob2o12$4842b2o$4841bobo$4841b2o8$4994b3o$4993bo3bo$4993b2ob2o12$
4932bo$4931bobo$4930bo3bo$4930b2ob2o12$4914b2o$4913bobo$4913b2o118bo$
5021bo10b3o$5020b3o8bo2bo$4998b2o20bo2bo6b2ob4o$4997bo20b4ob2o6b2o3b2o
$4997bo2bo16b2o3b2o13b2o$4997b5o14b2o14b2o2b2o$5017b2o2b2o9bo$5022bo$
5033b3o$5019b3o!

Code: Select all

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

User avatar
NimbleRogue
Posts: 524
Joined: January 11th, 2021, 11:48 pm

Re: Smallest Spaceships Supporting Specific Speeds (5s) Project

Post by NimbleRogue » September 28th, 2022, 5:49 pm

An absolute destruction of the oblique ship record (152, 22)c/14090

Code: Select all

x = 101, y = 102, rule = B2in3-cekn4eikz5ry6ci/S2aek3-ace4it5-jqy6i7c
10$31bo$30b3o$28bo3b2o$28bobo2bo$29bo8$29b2o$28b3o$27bo2bo$27b2o$27b2o
2bo$28b3o$29bo57$74bo$73bobo$71b2obobo$71b2obob2o$72b2ob2o$74b2o!
Edit 1: And a new second place (31, 25)c/12081

Code: Select all

x = 19, y = 14, rule = B2in3-ekn4ceikqtz5r6cin/S2aek3-ace4ei5kn6cei7e8
10b2o$10b3o$10bobo$11b3o$11bo$12b2o$11bobo$10bob2o$10b3o$11bo!

Code: Select all

x = 4, y = 3, rule = B3-cnqy4e5kr6n7c/S2-i3-ay4einrtyz5cejn6cin78
bo$3o$ob2o!

Code: Select all

#14c/85265o
x = 10, y = 4, rule = B2-an3-iqy4iknrtz5aijqy6aei78/S02ck3nqy4eiqrtwy5-ekq6-i78
2bo4bo$3b4o$ob6obo$2b6o!

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

Re: Smallest Spaceships Supporting Specific Speeds (5s) Project

Post by LaundryPizza03 » October 2nd, 2022, 6:18 pm

(72,44)c/712:

Code: Select all

x = 40, y = 36, rule = B3-cjny4jktz5cjy6ci/S2-ci3-ae4eit5aek7c
27b3o2b2o$27bo$27b3o$33bobo$30b2obobo$33b3o8$32b3o$32bo2bo$32bo2bo$32b
4o2$38b2o$39bo$37b3o8$5bo$4b3o$3b2obo$2bobo$b3o$2o$b3o$2bo!
For ssssb0, the best fix for bugs involving getRuleRangeElems seems to be to disable all rule minimization except for calculating the rule range upon starting up searchRule-matchPatt2, by removing calls to this function. It is unclear why the script is extremely prone to malfunctioning, even if we attempt to force the script to begin in an even geeration. Is it a parallelization issue?

Code: Select all

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

Post Reply