Soup search results

For discussion of specific patterns or specific families of patterns, both newly-discovered and well-known.
User avatar
Goldtiger997
Posts: 762
Joined: June 21st, 2016, 8:00 am

Re: Soup search results

Post by Goldtiger997 » November 10th, 2018, 9:45 am

A common method of reducing glider syntheses is by using 3 glider collisions to synthesize a constellation. I've made a script that should make this a lot easier for people. However it is in python, which I know several people have been unable to get to work with Golly. This method can still work if you have some method of determining an apgcode for a constellation outside of python.

Here's the script. The apgcode-determining part is borrowed from apgsearch. Select a constellation (of 20 cells or less) and run it. The script should output a pattern with all the collisions it knows, or tell you that it could not find any:

Code: Select all

import golly as g
g.setrule("B3/S23")

offset = 0
with open("consts.txt","r") as fl:
    consts = (fl.read()[1:-1]).split(", ")
with open("cols.txt","r") as fl:
    cols = (fl.read()[2:-2]).split("], [")
i = 0
for i in range(0,len(cols)):
	cols[i] = cols[i].split(", ")

def bijoscar(maxsteps):

    initpop = int(g.getpop())
    initrect = g.getrect()
    if (len(initrect) == 0):
        return 0
    inithash = g.hash(initrect)

    for i in xrange(maxsteps):

        g.run(1)

        if (int(g.getpop()) == initpop): 

            prect = g.getrect()
            phash = g.hash(prect)

            if (phash == inithash):

                period = i + 1

                if (prect == initrect):
                    return period
                else:
                    return -period 
    return -1


def canonise():
    
    p = bijoscar(4)
    
    representation = "#"
    for i in range(abs(p)):
        rect = g.getrect()
        representation = compare_representations(representation, canonise_orientation(rect[2], rect[3], rect[0], rect[1], 1, 0, 0, 1))
        representation = compare_representations(representation, canonise_orientation(rect[2], rect[3], rect[0]+rect[2]-1, rect[1], -1, 0, 0, 1))
        representation = compare_representations(representation, canonise_orientation(rect[2], rect[3], rect[0], rect[1]+rect[3]-1, 1, 0, 0, -1))
        representation = compare_representations(representation, canonise_orientation(rect[2], rect[3], rect[0]+rect[2]-1, rect[1]+rect[3]-1, -1, 0, 0, -1))
        representation = compare_representations(representation, canonise_orientation(rect[3], rect[2], rect[0], rect[1], 0, 1, 1, 0))
        representation = compare_representations(representation, canonise_orientation(rect[3], rect[2], rect[0]+rect[2]-1, rect[1], 0, -1, 1, 0))
        representation = compare_representations(representation, canonise_orientation(rect[3], rect[2], rect[0], rect[1]+rect[3]-1, 0, 1, -1, 0))
        representation = compare_representations(representation, canonise_orientation(rect[3], rect[2], rect[0]+rect[2]-1, rect[1]+rect[3]-1, 0, -1, -1, 0))
        g.run(1)
    
    if (p<0):
        prefix = "q"+str(abs(p))
    elif (p==1):
        prefix = "s"+str(g.getpop())
    else:
        prefix = "p"+str(p)

    return "x"+prefix+"_"+representation

# A subroutine used by canonise:
def canonise_orientation(length, breadth, ox, oy, a, b, c, d):

    representation = ""

    chars = "0123456789abcdefghijklmnopqrstuvwxyz"

    for v in xrange(int((breadth-1)/5)+1):
        zeroes = 0
        if (v != 0):
            representation += "z"
        for u in xrange(length):
            baudot = 0
            for w in xrange(5):
                x = ox + a*u + b*(5*v + w)
                y = oy + c*u + d*(5*v + w)
                baudot = (baudot >> 1) + 16*g.getcell(x, y)
            if (baudot == 0):
                zeroes += 1
            else:
                if (zeroes > 0):
                    if (zeroes == 1):
                        representation += "0"
                    elif (zeroes == 2):
                        representation += "w"
                    elif (zeroes == 3):
                        representation += "x"
                    else:
                        representation += "y"
                        representation += chars[zeroes - 4]
                zeroes = 0     
                representation += chars[baudot]
    return representation

# Compares strings first by length, then by lexicographical ordering.
# A hash character is worse than anything else.
def compare_representations(a, b):

    if (a == "#"):
        return b
    elif (b == "#"):
        return a
    elif (len(a) < len(b)):
        return a
    elif (len(b) < len(a)):
        return b
    elif (a < b):
        return a
    else:
        return b

pattern = canonise()
if pattern in consts:
    g.clear(1)
    g.clear(0)
    g.setgen("0")
    loc = consts.index(pattern)
    g.show(str(len(cols[loc])) + " collisions found")
    g.setname(pattern)
    for e in cols[loc]:
	    g.putcells(g.parse(e),offset,0)
	    offset += 50
else:
    g.note("No 3 glider collision found for that constellation. Better luck next time")
It relies on two text files which store all the collisions. The text files and the above program are attached here:
synthesise_constellation.zip
(256.78 KiB) Downloaded 483 times
For example, here's the output for one of the blinker-boat constellations in Extrementhusiast's above post. It runs almost instantaneously:

Code: Select all

x = 267, y = 16, rule = B3/S23
10bo49bo49bo49bo50bo53bo$10bobo47bobo46bo49bo50bo53bo$10b2o48b2o47b3o
47b3o48b3o51b3o$b2o98b2o48b2o$obo47b3o47bobo47bobo$2bo49bo49bo49bo47b
3o$51bo150bo$201bo49bo$251b2o$7b3o240bobo$9bo46b2o48b3o98b2o52b2o$8bo
46bobo50bo97bobo51bobo$57bo49bo100bo53bo$154bo$154b2o$153bobo!
As you can see, it contains a few duplicates. This is because the collisions originally come from an gencols search, so there are probably also quite a few collisions missing. However, it seems to be good enough for most purposes.

Edit: In case somebody wants to modify/improve it, here's the script that was used to generate the text files. It reads from a gencols output file:

Code: Select all

import golly as g
g.setrule("Life")

FILENAME = "C:/cygwin64/home/Dary Fitrady/gencols/3g.col"
MAX_GENS = 256
MAX_POP = 20

count=0
consts = []
cols = []

def bijoscar(maxsteps):

    initpop = int(g.getpop())
    initrect = g.getrect()
    if (len(initrect) == 0):
        return 0
    inithash = g.hash(initrect)

    for i in xrange(maxsteps):

        g.run(1)

        if (int(g.getpop()) == initpop): 

            prect = g.getrect()
            phash = g.hash(prect)

            if (phash == inithash):

                period = i + 1

                if (prect == initrect):
                    return period
                else:
                    return -period 
    return -1


def canonise():
    
    p = bijoscar(4)
    
    representation = "#"
    for i in range(abs(p)):
        rect = g.getrect()
        representation = compare_representations(representation, canonise_orientation(rect[2], rect[3], rect[0], rect[1], 1, 0, 0, 1))
        representation = compare_representations(representation, canonise_orientation(rect[2], rect[3], rect[0]+rect[2]-1, rect[1], -1, 0, 0, 1))
        representation = compare_representations(representation, canonise_orientation(rect[2], rect[3], rect[0], rect[1]+rect[3]-1, 1, 0, 0, -1))
        representation = compare_representations(representation, canonise_orientation(rect[2], rect[3], rect[0]+rect[2]-1, rect[1]+rect[3]-1, -1, 0, 0, -1))
        representation = compare_representations(representation, canonise_orientation(rect[3], rect[2], rect[0], rect[1], 0, 1, 1, 0))
        representation = compare_representations(representation, canonise_orientation(rect[3], rect[2], rect[0]+rect[2]-1, rect[1], 0, -1, 1, 0))
        representation = compare_representations(representation, canonise_orientation(rect[3], rect[2], rect[0], rect[1]+rect[3]-1, 0, 1, -1, 0))
        representation = compare_representations(representation, canonise_orientation(rect[3], rect[2], rect[0]+rect[2]-1, rect[1]+rect[3]-1, 0, -1, -1, 0))
        g.run(1)
    
    if (p<0):
        prefix = "q"+str(abs(p))
    elif (p==1):
        prefix = "s"+str(g.getpop())
    else:
        prefix = "p"+str(p)

    return "x"+prefix+"_"+representation

# A subroutine used by canonise:
def canonise_orientation(length, breadth, ox, oy, a, b, c, d):

    representation = ""

    chars = "0123456789abcdefghijklmnopqrstuvwxyz"

    for v in xrange(int((breadth-1)/5)+1):
        zeroes = 0
        if (v != 0):
            representation += "z"
        for u in xrange(length):
            baudot = 0
            for w in xrange(5):
                x = ox + a*u + b*(5*v + w)
                y = oy + c*u + d*(5*v + w)
                baudot = (baudot >> 1) + 16*g.getcell(x, y)
            if (baudot == 0):
                zeroes += 1
            else:
                if (zeroes > 0):
                    if (zeroes == 1):
                        representation += "0"
                    elif (zeroes == 2):
                        representation += "w"
                    elif (zeroes == 3):
                        representation += "x"
                    else:
                        representation += "y"
                        representation += chars[zeroes - 4]
                zeroes = 0     
                representation += chars[baudot]
    return representation

# Compares strings first by length, then by lexicographical ordering.
# A hash character is worse than anything else.
def compare_representations(a, b):

    if (a == "#"):
        return b
    elif (b == "#"):
        return a
    elif (len(a) < len(b)):
        return a
    elif (len(b) < len(a)):
        return b
    elif (a < b):
        return a
    else:
        return b

for s in open(FILENAME):
    count+=1
    #if count%100==0:
        #g.show(str(count))
    g.new("Pattern "+str(count))
    rle = s.replace('!','$').replace('.','b').replace('*','o')[:-1]+'!'
    pat=g.parse(rle)
    g.putcells(pat)
    g.run(MAX_GENS)
    oldbox = g.getrect()
    oldpop = int(g.getpop())
    if oldpop < MAX_POP and oldpop > 0:
        g.run(4)
        #rudimentary stable/low period constellation test
        if g.getrect() == oldbox and int(g.getpop()) == oldpop:
            apg = canonise()
            if apg in consts:
			    cols[consts.index(apg)].append(rle)  
            else:
                consts.append(apg)
                cols.append([rle])
    g.new('')
    
with open("consts.txt","w") as output:
    output.write(str(consts))
with open("cols.txt","w") as output:
    output.write(str(cols))

User avatar
dvgrn
Moderator
Posts: 10610
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: Soup search results

Post by dvgrn » November 10th, 2018, 2:21 pm

Goldtiger997 wrote:A common method of reducing glider syntheses is by using 3 glider collisions to synthesize a constellation. I've made a script that should make this a lot easier for people.
This will be good to have. Do you happen to have the specific calls you used to create the gencols output?

Seems like it might be a good idea to adapt the search to use 2718281828's three-glider collision collection. Haven't looked yet to see if something has to be done to handle different orientations of the same constellation.

In the long run it would be nice to have a lookup system that can find every instance of a particular spark or other active reaction among the three-glider collisions, with or without additional junk off to the side -- or even, every instance of an active reaction where the history envelope doesn't touch some user-specified forbidden zone. But that's going to take quite a bit more indexing work, or it will be a much slower search. The popseq program that chris_c posted several years ago doesn't allow for dying sparks off to the side -- or at least you'd have to do several searches.

User avatar
calcyman
Moderator
Posts: 2932
Joined: June 1st, 2009, 4:32 pm

Re: Soup search results

Post by calcyman » November 10th, 2018, 11:08 pm

rliston wrote:My FPGA code is checked in to https://github.com/rliston/life-soup along with 288 20x20 soups with lifespan 25K+. It is currently running on a Xilinx EK-U1-VCU118-G evaluation board but with some effort the verilog code could be ported to run on AWS F1 instances e.g. https://aws.amazon.com/ec2/instance-types/f1/ although TBH I'm not sure it's any faster (~2550 soups/second) than software search.
Also, I miscounted and this pattern was found after searching 23B random patterns over 3 months.

Thanks,
Rob
Rob's now found a 37911-generation methuselah which emits a natural MWSS:

Code: Select all

x = 16, y = 16, rule = B3/S23
bobobobbbbbooobo$
boobboobobbooobb$
bboooobobboboobo$
obboobbooboboooo$
obbboooboooobobo$
oboobbobbbbboboo$
bbobbooobooobobo$
bbbbbobobbbbobbo$
obbooobooooooobb$
ooobbbboobbbbbob$
bbbboboooobbobbb$
boooooobobbbbobo$
bbooobooooboobob$
bobbobbboobooobo$
boooobobobboooob$
bobbboobooooobbb!
He submitted 176 * 10^9 objects yesterday, which equates to over 8 * 10^9 soups. We should therefore see a lot more of these impressive methuselahs in the coming weeks.
What do you do with ill crystallographers? Take them to the mono-clinic!

User avatar
Goldtiger997
Posts: 762
Joined: June 21st, 2016, 8:00 am

Re: Soup search results

Post by Goldtiger997 » November 11th, 2018, 4:14 am

dvgrn wrote:This will be good to have. Do you happen to have the specific calls you used to create the gencols output?

Seems like it might be a good idea to adapt the search to use 2718281828's three-glider collision collection. Haven't looked yet to see if something has to be done to handle different orientations of the same constellation.
I ran the gencols search way back in 2016, but I suspect it was something very similar to what chris_c wrote here.

I followed your idea of using 2718281828's collection to improve the script:
synthesise_constellation-ee9.zip
(473.4 KiB) Downloaded 490 times
It took several hours to run because 2718281828's collision collection contained quite a lot more syntheses then my gencols-generated ones (460000 vs 76000). However, the script has quite a lot more collisions in its database now. For example, it used to not be able to find any collisions for the following constellation, but now it finds eight:

Code: Select all

x = 360, y = 29, rule = B3/S23
6bo43bo51bo48bo49bo49bo7bo54bo42bo$7b2o42b2o47bobo49bo49bo48b2o7bo54b
2o40bobo$6b2o3bo38b2o49b2o47b3o47b3o47bobo5b3o53b2o41b2o$11b2o306bo$
10bobo305b2o$152b2o48b2o56b2o56bobo$2o54bo96b2o48b2o56b2o$b2o54b2o93bo
49bo57bo$o55b2o293bo$61bo290bo$61b2o50bo236b3o$60bobo51bo38b2o$112b3o
39b2o$153bo197b3o$353bo$114b2o97b3o136bo$115b2o96bo$114bo99bo9$301b2o$
300bobo$302bo!
I accidentally made it only test for constellations less than 20 bits. It should be straightforward for anyone else modify the script to not have a limit on constellation population, but I won't be doing it soon.
dvgrn wrote:In the long run it would be nice to have a lookup system that can find every instance of a particular spark or other active reaction among the three-glider collisions, with or without additional junk off to the side -- or even, every instance of an active reaction where the history envelope doesn't touch some user-specified forbidden zone. But that's going to take quite a bit more indexing work, or it will be a much slower search. The popseq program that chris_c posted several years ago doesn't allow for dying sparks off to the side -- or at least you'd have to do several searches.
That certainly would be nice to have. I'm not sure how to do such a thing (nicely) though.

rliston
Posts: 6
Joined: July 20th, 2018, 9:30 pm

Re: Soup search results

Post by rliston » November 11th, 2018, 12:47 pm

calcyman wrote:
rliston wrote:My FPGA code is checked in to https://github.com/rliston/life-soup along with 288 20x20 soups with lifespan 25K+. It is currently running on a Xilinx EK-U1-VCU118-G evaluation board but with some effort the verilog code could be ported to run on AWS F1 instances e.g. https://aws.amazon.com/ec2/instance-types/f1/ although TBH I'm not sure it's any faster (~2550 soups/second) than software search.
Also, I miscounted and this pattern was found after searching 23B random patterns over 3 months.

Thanks,
Rob
Rob's now found a 37911-generation methuselah which emits a natural MWSS:

Code: Select all

x = 16, y = 16, rule = B3/S23
bobobobbbbbooobo$
boobboobobbooobb$
bboooobobboboobo$
obboobbooboboooo$
obbboooboooobobo$
oboobbobbbbboboo$
bbobbooobooobobo$
bbbbbobobbbbobbo$
obbooobooooooobb$
ooobbbboobbbbbob$
bbbboboooobbobbb$
boooooobobbbbobo$
bbooobooooboobob$
bobbobbboobooobo$
boooobobobboooob$
bobbboobooooobbb!
He submitted 176 * 10^9 objects yesterday, which equates to over 8 * 10^9 soups. We should therefore see a lot more of these impressive methuselahs in the coming weeks.
I'm currently running two instances of v4.64 on a server with dual Xeon 2.4 GHz E5-2699A. This processor has 22 cores / 44 threads so I'm using '-p 44'.
-Rob

[ 0.582002] smpboot: CPU0: Intel(R) Xeon(R) CPU E5-2699A v4 @ 2.40GHz (family: 0x6, model: 0x4f, stepping: 0x1)
[ 1.803232] x86: Booted up 2 nodes, 88 CPUs
[ 1.808255] smpboot: Total of 88 processors activated (421452.72 BogoMIPS)

User avatar
77topaz
Posts: 1496
Joined: January 12th, 2018, 9:19 pm

Re: Soup search results

Post by 77topaz » November 12th, 2018, 2:36 am

rliston, could you please increase your haul size? You're submitting so many hauls so quickly that apgsearch processes such as /verify are getting backlogged. I recommend using 10x-30x the haul size you're currently using.

rliston
Posts: 6
Joined: July 20th, 2018, 9:30 pm

Re: Soup search results

Post by rliston » November 12th, 2018, 12:26 pm

77topaz wrote:rliston, could you please increase your haul size? You're submitting so many hauls so quickly that apgsearch processes such as /verify are getting backlogged. I recommend using 10x-30x the haul size you're currently using.
Sure, I increased soups_per_haul to 300M. Thanks, Rob

User avatar
praosylen
Posts: 2443
Joined: September 13th, 2014, 5:36 pm
Location: Pembina University, Home of the Gliders
Contact:

Re: Soup search results

Post by praosylen » November 12th, 2018, 8:05 pm

New double p46 shuttle variant in D4_+1:

Code: Select all

x = 57, y = 19, rule = B3/S23
20b2o13b2o$20b2o13b2o3$17b2o19b2o$2o15bobo17bobo15b2o$2o17bo17bo17b2o$17b3o
17b3o4$17b3o17b3o$2o17bo17bo17b2o$2o15bobo17bobo15b2o$17b2o19b2o3$20b2o13b2o$
20b2o13b2o!
former username: A for Awesome
praosylen#5847 (Discord)

The only decision I made was made
of flowers, to jump universes to one of springtime in
a land of former winter, where no invisible walls stood,
or could stand for more than a few hours at most...

dani
Posts: 1222
Joined: October 27th, 2017, 3:43 pm

Re: Soup search results

Post by dani » November 12th, 2018, 8:12 pm

Was it ever possible to get a phi spark out of a twin bee? Well, it is now:

Code: Select all

x = 33, y = 23, rule = B3/S23
20b2o$20b2o8b2o$30bo$28bobo$17bo10b2o$2o15b2o$2o16b2o$13b2o2b2o3$29b2o
$13b2o2b2o12bo$2o16b2o12bo$2o15b2o10bobo$17bo12bo5$22b2o$23bo$20b3o$
20bo!
Of course, it can be substituted for Tanner's p46 so it's useless.

EDIT: This shows off a block factory and a failed gun:

Code: Select all

x = 38, y = 54, rule = B3/S23
20b2o$20b2o8b2o$30bo$28bobo$17bo10b2o$2o15b2o$2o16b2o$13b2o2b2o13b2o$
32bo$30bobo$30b2o$13b2o2b2o$2o16b2o$2o15b2o$17bo8$36bo$34b3o$33bo$33b
2o5$17b2o$16bobo5b3o3b3o$16bo7bo2bobo2bo3b2o$15b2o6bo3bobo3bo2b2o$24bo
2bobo2bo$26bo3bo$24b2o5b2o$23b3o5b3o$23b3o5b3o14$24b2o5b2o$24b2o5b2o!

User avatar
Ian07
Moderator
Posts: 891
Joined: September 22nd, 2018, 8:48 am
Location: New Jersey, US

Re: Soup search results

Post by Ian07 » November 14th, 2018, 5:16 pm

Rob Liston has found another nonstandard infinite growth, except it actually got marked as zz_LINEAR rather than yl1152:

Code: Select all

x = 16, y = 16, rule = B3/S23
ooooooboooobbbbb$
oooobbbobboooobo$
booobobbobbobbbb$
bboboooboboooboo$
bbbobobooboooboo$
ooobbboboboobbbo$
obbbbobbooboboob$
obbbbbobooboobbo$
bobooooobobboobb$
booboooooooobobo$
obobbobboobboobo$
bbooobobobobbobb$
bobbobbbbbboboob$
oboboooooooboboo$
obbbbboobboooboo$
oboooobooooboobo!
Haul: https://catagolue.appspot.com/haul/b3s2 ... 52d10f2a72

Also, we finally have a second natural Silver's p5, this time on an aircraft carrier:

Code: Select all

x = 16, y = 16, rule = B3/S23
boobooboobbooooo$
bbobbbbbbobbbbbb$
obbboooobobbobbb$
obboobbooobobbob$
booobbbbbobbbbob$
boboooboooobobbo$
ooobbbobooboobob$
bbobboooooboobbb$
bobbooobbobbbbbb$
obobboooobbbobob$
bboobooboooboobo$
ooobbobboobooooo$
obobobobbooboooo$
bbbbboboobobbboo$
ooobooobbbbobbbb$
boobbbbobboobobb!
This was actually submitted not by Rob Liston but rather someone named sittingstone1:
https://catagolue.appspot.com/haul/b3s2 ... e91721a490

User avatar
calcyman
Moderator
Posts: 2932
Joined: June 1st, 2009, 4:32 pm

Re: Soup search results

Post by calcyman » November 14th, 2018, 9:49 pm

Ian07 wrote:Rob Liston has found another nonstandard infinite growth, except it actually got marked as zz_LINEAR rather than yl1152:
Ouch. I've renamed it to yl1152_1_332_ce5c623ad49c2712d55df5b89c87da86 and modified apgluxe to be more careful about this sort of thing.
Also, we finally have a second natural Silver's p5, this time on an aircraft carrier:

Code: Select all

x = 16, y = 16, rule = B3/S23
boobooboobbooooo$
bbobbbbbbobbbbbb$
obbboooobobbobbb$
obboobbooobobbob$
booobbbbbobbbbob$
boboooboooobobbo$
ooobbbobooboobob$
bbobboooooboobbb$
bobbooobbobbbbbb$
obobboooobbbobob$
bboobooboooboobo$
ooobbobboobooooo$
obobobobbooboooo$
bbbbboboobobbboo$
ooobooobbbbobbbb$
boobbbbobboobobb!
This was actually submitted not by Rob Liston but rather someone named sittingstone1:
https://catagolue.appspot.com/haul/b3s2 ... e91721a490
Impressive! Especially given that the user has only submitted 7.7 billion objects (i.e. less than 1/30000 of the total Catagolue census).
What do you do with ill crystallographers? Take them to the mono-clinic!

User avatar
calcyman
Moderator
Posts: 2932
Joined: June 1st, 2009, 4:32 pm

Re: Soup search results

Post by calcyman » November 18th, 2018, 7:07 pm

Rob Liston has now found a 41372-tick methuselah producing a natural
LWSS. It still doesn't beat Dave Greene's 42100-tick methuselah, but
it comes pretty close:

Code: Select all

x = 16, y = 16, rule = B3/S23
ob3ob2ob3obo$o3b6o2bo2bo$5ob3ob3obo$ob2o10bo$5ob6o2bo$b2o3b2o2b2o3bo$
2bobob4obobobo$2bobob3obo2bobo$2o3b8ob2o$3b3o3bo3b3o$3b3obob2ob3o$o3bo
3bo4bobo$obobo2bob2o2bobo$o3bob2o2bobo$bobobo3b2o2b2o$2bobo3bo2bobobo!
What do you do with ill crystallographers? Take them to the mono-clinic!

User avatar
Extrementhusiast
Posts: 1966
Joined: June 16th, 2009, 11:24 pm
Location: USA

Re: Soup search results

Post by Extrementhusiast » November 21st, 2018, 5:30 pm

Goldtiger997 wrote:I accidentally made it only test for constellations less than 20 bits. It should be straightforward for anyone else modify the script to not have a limit on constellation population, but I won't be doing it soon.
I'm not so sure. Running the script as it is on a honey farm gives no results (as expected by your comment), but I didn't see an obvious check for constellation size, and manually adding the honey farm to the list creates an IndexError on line 125. (Also, the script fails at line 121 if there is no selection when starting the script, regardless of constellation size.)

(This sequence of posts is likely a better fit in the Enumerating Three-Glider Collisions thread.)
I Like My Heisenburps! (and others)

wildmyron
Posts: 1542
Joined: August 9th, 2013, 12:45 am
Location: Western Australia

Re: Soup search results

Post by wildmyron » November 22nd, 2018, 12:16 am

Extrementhusiast wrote:
Goldtiger997 wrote:I accidentally made it only test for constellations less than 20 bits. It should be straightforward for anyone else modify the script to not have a limit on constellation population, but I won't be doing it soon.
I'm not so sure. Running the script as it is on a honey farm gives no results (as expected by your comment), but I didn't see an obvious check for constellation size, and manually adding the honey farm to the list creates an IndexError on line 125. (Also, the script fails at line 121 if there is no selection when starting the script, regardless of constellation size.)
The limit on constellation size comes from the script which generates the database in the post at the top of this page: http://conwaylife.com/forums/viewtopic. ... 539#p65539
line 6: MAX_POP = 20
The 5S project (Smallest Spaceships Supporting Specific Speeds) is now maintained by AforAmpere. The latest collection is hosted on GitHub and contains well over 1,000,000 spaceships.

Semi-active here - recovering from a severe case of LWTDS.

User avatar
Entity Valkyrie
Posts: 247
Joined: November 30th, 2017, 3:30 am

Re: Soup search results

Post by Entity Valkyrie » November 23rd, 2018, 4:19 pm

27x27 soup, density = 1/3. A 28-bit still life pops up.

Code: Select all

x = 27, y = 27, rule = B3/S23
2b4o3b2o2bo2b2o5b2obo$b2ob7o9bo5bo$bob2ob4o3bo2bo2b2o$3bo2bo5bo5bobob
2o2bo$o2b2o3bo4bobo5bo$10bo14bo$o2bo8bo3bob2o2bob2o$2bo2b2o3bo3bo7bobo
bo$o7bo3bo5bobo4b2o$2bo2bo3b2o5bo4bo$5bo2b2obobo3bo7b2o$bo2b2o2b2o2b2o
5bobo2b3o$bo2bo4b2o5b4o3b4o$4bo2bob3o4b6ob4o$bo22bo$o12bo10b3o$4b2o3b
2o3b2o2bobo$6bo4bo10b3o$2b2o4b2o6bo2bo$o2bo13bo6b3o$o2bobo2b5o7b3o$7bo
bob2o2b2o4b2ob3o$6b7o5bobobob3o$3o3bob2ob2o4b3o4b3o$o5b6o4b2o3bo2b3o$
10b2o2b6o2b5o$2bobobobob2o3b3o4b5o!
Another soup (38x38), density = 1/3.

Code: Select all

x = 38, y = 39, rule = B3/S23
7bo2bo5bo3b2o2bo2bo4b6o$4bo3bo3bo16bo2b4obo$5o6bo2b2o3bo2bobo2bobo3b5o
$ob5o12bo5bobo6b4o$5b3obo20bo3bob2o$bo4b5o4b5o4bo4b2o2bo3bo$7bob3o4b4o
2bo6bo$2bo3bo2b4o2b5obo3bo8bo$b2o4b2ob2o13bob2o3b2obobo$2o4b5o24b2o$2o
3b3obo6bo2b2o14bo$2bo3bo12bobob3o3b3o$5bo9bobo3bob4o3b3o$o2bo8bo6bo3b
5o2bo2bo2bo$2bo7bo3b2o5bo3bo4b2o5bo$7bo2bobo2bo9bo2bob2o2bob2o$8o11b2o
4b3ob6ob2o$5obo3b3obo3bo6b5o4bo$b2o3bo8b3o3bo3bob2o5bo$2b2o2b3o2bo3bo
10b3o2bo2b2o$6b2ob3o7bo3bo$2b11ob2o2bo2bobo7bo5bo$6b2o16bob2obobo2b2o$
2ob2o2b3obo3b4o2bobo3b4o3bob2o$5obobob3obobo7b2o2bob3obobo$b2obo2bo3b
2ob3o2b6ob2o5b2o2bo$o2bo2bobobob3o3bobobobob2o3bo3b2o$bob3o2bo2b2o2bob
2ob2obob3o2b2obob3o$2bo2b2obobobo3bo3b2o4b2ob3o2b3o$o2b2obobo4bob2o4bo
bob5o2bobo2$o17b2o10bo5bo$3bo4bo4b2o12bo9bo$o3bo3b2o10bobobo6b2o3bo$3b
3o3bobo4b2o12bo3bo$ob4o4bo5b3o5b2obo9bo$3bo9bo2bo8b2o3bo3bo2bo$o3bo2b
2o3b3o7b2o5bo2bobobo$6bo5b2o!
Last edited by Entity Valkyrie on November 23rd, 2018, 5:05 pm, edited 1 time in total.

User avatar
gmc_nxtman
Posts: 1150
Joined: May 26th, 2015, 7:20 pm

Re: Soup search results

Post by gmc_nxtman » November 23rd, 2018, 4:40 pm

Did you use apgsearch to find this?

User avatar
Entity Valkyrie
Posts: 247
Joined: November 30th, 2017, 3:30 am

Re: Soup search results

Post by Entity Valkyrie » November 23rd, 2018, 5:06 pm

gmc_nxtman wrote:Did you use apgsearch to find this?
No.

mniemiec
Posts: 1590
Joined: June 1st, 2013, 12:00 am

Re: Soup search results

Post by mniemiec » November 23rd, 2018, 5:41 pm

Entity Valkyrie wrote:27x27 soup, density = 1/3. A 28-bit still life pops up. ...
This is a predecessor still-life used in the Snark synthesis. This soup forms it from an eater, blinker, block, beehive, and LOM - which is exactly the way it is formed in the Snark synthesis, except the beehive can be replaced by a glider.

User avatar
2718281828
Posts: 738
Joined: August 8th, 2017, 5:38 pm

Re: Soup search results

Post by 2718281828 » November 23rd, 2018, 6:03 pm

mniemiec wrote:
Entity Valkyrie wrote:27x27 soup, density = 1/3. A 28-bit still life pops up. ...
This is a predecessor still-life used in the Snark synthesis. This soup forms it from an eater, blinker, block, beehive, and LOM - which is exactly the way it is formed in the Snark synthesis, except the beehive can be replaced by a glider.
And the best synthesis requires 9G (eater+(blinker+block)+lom+glider+clean_up = 2+3+2+1+1): viewtopic.php?f=2&t=1082&start=50#p52689

User avatar
dvgrn
Moderator
Posts: 10610
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: Soup search results

Post by dvgrn » November 23rd, 2018, 6:22 pm

Entity Valkyrie wrote:
gmc_nxtman wrote:Did you use apgsearch to find this?
No.
A soup is a "random initial pattern", so these two patterns are badly misadvertised. Unless Entity Valkyrie can provide the random number generator and starting seed used to create these patterns, it might have been better to post them on some other thread, and/or wait four months and a week before posting.

User avatar
Saka
Posts: 3627
Joined: June 19th, 2015, 8:50 pm
Location: Indonesia
Contact:

Re: Soup search results

Post by Saka » November 24th, 2018, 7:26 am

dvgrn wrote:and/or wait four months and a week before posting.
(off topicish) Why "4 months and a week"? What happens in 4 months and a week?

User avatar
calcyman
Moderator
Posts: 2932
Joined: June 1st, 2009, 4:32 pm

Re: Soup search results

Post by calcyman » November 24th, 2018, 10:30 am

Saka wrote:
dvgrn wrote:and/or wait four months and a week before posting.
(off topicish) Why "4 months and a week"? What happens in 4 months and a week?
Sir Robin Synthesis Day
What do you do with ill crystallographers? Take them to the mono-clinic!

wwei23

Re: Soup search results

Post by wwei23 » November 24th, 2018, 10:44 am

calcyman wrote:
Saka wrote:
dvgrn wrote:and/or wait four months and a week before posting.
(off topicish) Why "4 months and a week"? What happens in 4 months and a week?
Sir Robin Synthesis Day
What's Sir Robin Synthesis Day? (off-topicish as well)

User avatar
Ian07
Moderator
Posts: 891
Joined: September 22nd, 2018, 8:48 am
Location: New Jersey, US

Re: Soup search results

Post by Ian07 » November 24th, 2018, 3:26 pm

p54 shuttle variant in D8_1:

Code: Select all

x = 31, y = 31, rule = B3/S23
bbbboobboboboobbboobobobboobbbb$
bboobbobbbbobbbobbbobbbbobboobb$
boobbobbbooboboboboboobbbobboob$
bobbobbbobooobbobbooobobbbobbob$
obbobobbbbbbbbbobbbbbbbbbobobbo$
obobobbbobooboboboboobobbbobobo$
bobbbbbbbbbobbbbbbbobbbbbbbbbob$
bbbbbbbobbobooobooobobbobbbbbbb$
obbobobbbbooooobooooobbbbobobbo$
bbobbbbbbbbbobbobbobbbbbbbbbobb$
obooboboobbobooooobobbooboboobo$
bobobooboboobbooobbooboboobobob$
oboobbbooobbbbbbbbbbbooobbboobo$
obbbboboobobbbbobbbboboobobbbbo$
bbobbbbooboobbbbbbbooboobbbbobb$
bobooobbbooobobbbobooobbbooobob$
bbobbbbooboobbbbbbbooboobbbbobb$
obbbboboobobbbbobbbboboobobbbbo$
oboobbbooobbbbbbbbbbbooobbboobo$
bobobooboboobbooobbooboboobobob$
obooboboobbobooooobobbooboboobo$
bbobbbbbbbbbobbobbobbbbbbbbbobb$
obbobobbbbooooobooooobbbbobobbo$
bbbbbbbobbobooobooobobbobbbbbbb$
bobbbbbbbbbobbbbbbbobbbbbbbbbob$
obobobbbobooboboboboobobbbobobo$
obbobobbbbbbbbbobbbbbbbbbobobbo$
bobbobbbobooobbobbooobobbbobbob$
boobbobbbooboboboboboobbbobboob$
bboobbobbbbobbbobbbobbbbobboobb$
bbbboobboboboobbboobobobboobbbb!
Catagolue page: http://catagolue.appspot.com/object/xp5 ... 7113/b3s23

Haul submitted by Apple Bottom, though I don't have the link since the sample soups in Catagolue Reloaded no longer show the haul.

User avatar
Apple Bottom
Posts: 1034
Joined: July 27th, 2015, 2:06 pm
Contact:

Re: Soup search results

Post by Apple Bottom » November 24th, 2018, 3:35 pm

Ian07 wrote:Haul submitted by Apple Bottom, though I don't have the link since the sample soups in Catagolue Reloaded no longer show the haul.
They don't? Strange, it's still working for me --- mind, I'm running the current bleeding-edge version, whereas everyone else only gets what Opera has gotten around to approving. There's two updates pending, and the previous one was left unreviewed by the add-on moderators for five months. But I digress...

In any case the haul's here, submitted just earlier today. Thanks for noticing, I totally missed this myself.
If you speak, your speech must be better than your silence would have been. — Arabian proverb

Catagolue: Apple Bottom • Life Wiki: Apple Bottom • Twitter: @_AppleBottom_

Proud member of the Pattern Raiders!

Post Reply