Spaceship Discussion Thread

For discussion of specific patterns or specific families of patterns, both newly-discovered and well-known.
User avatar
Entity Valkyrie
Posts: 247
Joined: November 30th, 2017, 3:30 am

Re: Spaceship Discussion Thread

Post by Entity Valkyrie » November 30th, 2017, 6:23 am

Code: Select all

x = 4, y = 3, rule = B2/S
b2o2$o2bo!

User avatar
BlinkerSpawn
Posts: 1992
Joined: November 8th, 2014, 8:48 pm
Location: Getting a snacker from R-Bee's

Re: Spaceship Discussion Thread

Post by BlinkerSpawn » November 30th, 2017, 9:15 am

Entity Valkyrie wrote:

Code: Select all

x = 4, y = 3, rule = B2/S
b2o2$o2bo!
This is one of the three basic kinds of photon in rules of this family, the other two being these:

Code: Select all

x = 13, y = 3, rule = B2/S
b2o7b2o$o2bo5bo$12bo!
LifeWiki: Like Wikipedia but with more spaceships. [citation needed]

Image

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

Re: Spaceship Discussion Thread

Post by AforAmpere » December 10th, 2017, 2:01 pm

3c/10 w9u is negative, unfortunately.
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.

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

Re: Spaceship Discussion Thread

Post by Sokwe » December 10th, 2017, 4:22 pm

AforAmpere wrote:3c/10 w9u is negative, unfortunately.
Thanks. Are you planning to run the 3c/10 w9g search? Are you still running the c/9 w8g search?
-Matthias Merzenich

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

Re: Spaceship Discussion Thread

Post by AforAmpere » December 10th, 2017, 6:08 pm

I did not end up doing the C/9 w8g search, and I will start the 3c/10 w9g search soon, I am running 2 ntzfind w10 searches in other rules, so my RAM is mostly taken.
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
praosylen
Posts: 2443
Joined: September 13th, 2014, 5:36 pm
Location: Pembina University, Home of the Gliders
Contact:

Re: Spaceship Discussion Thread

Post by praosylen » December 31st, 2017, 11:08 am

2-engine Cordership, minimum population 100:

Code: Select all

x = 41, y = 49, rule = B3/S23
19b2o$19b4o$19bob2o2$20bo$19b2o$19b3o$21bo$33b2o$33b2o7$36bo$35b2o$34b
o3bo$35b2o2bo$40bo$37bobo$38bo$38bo$38b2o$38b2o3$13bo10bo$12b5o5bob2o
11bo$11bo10bo3bo9bo$12b2o8b3obo9b2o$13b2o9b2o12bo$2o13bo21b3o$2o35b3o
7$8b2o$8b2o11b2o$19b2o2bo$24bo3bo$18bo5bo3bo$19bo2b2o3bobo$20b3o5bo$
28bo!
Predecessor, in case it's useful:

Code: Select all

x = 20, y = 27, rule = B3/S23
b2o$b2o6$14b3o$15bo2bo$19bo$16bobo6$2bobo$2o2b2o$2o3b2o$2o2b2o$b2ob2o$
2b2o3$3b3o$3bobo$3b3o!
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...

User avatar
Macbi
Posts: 903
Joined: March 29th, 2009, 4:58 am

Re: Spaceship Discussion Thread

Post by Macbi » December 31st, 2017, 11:23 am

A for awesome wrote:2-engine Cordership, minimum population 100:

Code: Select all

code
Nice! How did you find it? And how did other people not already find it?

dbell
Posts: 260
Joined: June 27th, 2013, 12:47 am
Contact:

Re: Spaceship Discussion Thread

Post by dbell » December 31st, 2017, 11:27 am

A two-engine Cordership, amazing. It's not even glide-symmetric.

Congratulations!

BCNU,
-dbell

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

Re: Spaceship Discussion Thread

Post by praosylen » December 31st, 2017, 11:35 am

Macbi wrote:
A for awesome wrote:2-engine Cordership, minimum population 100:

Code: Select all

code
Nice! How did you find it? And how did other people not already find it?
Here's the script:

Code: Select all

import golly as g
from random import randint
def nest(cl):
    rtn = []
    if len(cl) % 2:
        for i in xrange(len(cl)/3):
            rtn.append((cl[i*3],cl[i*3+1],cl[i*3+2]))
    else:
        for i in xrange(len(cl)/2):
            rtn.append((cl[i*2],cl[i*2+1]))
    return rtn
def flatten(cl):
    rtn = []
    for i in cl:
        rtn += list(i)
    if len(cl[0]) == 3 and not len(rtn) % 2:
        rtn.append(0)
    return rtn
#I wish Golly had an easy built-in way of doing this.
def clear():
    g.setgen("0")
    g.select(g.getrect())
    if not g.getselrect(): return
    g.clear(0)
    g.select([])
se = [0,0,1,0,2,0,1,1,4,1,5,2,2,3,4,3]
solutions = []
n = 0
g.new("Switch engine testing grounds")
#I'm too lazy to go through and fix all of the indentation here.
try:
    #for i in xrange(96):
    #    for x in xrange(50):
    #        for y in xrange(-x, 1):
            while True:
                #for _ in xrange(10):
                if True:
                    i = randint(0, 96)
                    x = randint(0, 40)
                    y = randint(-x, 1)
                    clear()
                    g.putcells(g.evolve(se, i))
                    g.putcells(se, x, y)
                    c = nest(g.getcells(g.getrect()))
                    g.select([20,-40,7,7])
                    g.randfill(50)
                    g.select([0,-20,7,7])
                    g.randfill(50)
                    g.select([])
                    pat = g.getcells(g.getrect())
                    #Repeatedly test for switch engine continued survival
                    for cyc in xrange(1, 31):
                        g.run(96)
                        c2 = nest(g.getcells(g.getrect()))
                        #g.note(str(c) + "\n\n" + str(c2))
                        for j in c:
                            if (j[0]+8*cyc, j[1]+8*cyc) not in c2: #Something's wrong
                                #g.note(str((j[0]+8*cyc, j[1]+8*cyc)) + "\n\n" + str(c2))
                                break
                        else:
                            #Everything's okay, let's advance 96 gens and try again
                            continue
                        #We've broken from the inner loop if we're here, which means we're done beating a dead horse
                        break
                    else: #A likely candidate
                        #Advance a while longer and repeat the check for continued SE survival
                        g.run(9600)
                        c2 = nest(g.getcells(g.getrect()))
                        #g.note(str(c) + "\n\n" + str(c2))
                        #g.note(g.getgen())
                        for j in c:
                            if (j[0]+1040, j[1]+1040) not in c2:
                                #g.note(str((j[0]+8*cyc, j[1]+8*cyc)) + "\n\n" + str(c2))
                                break
                        else: #SE's are still active, so this is *almost* certainly a puffer
                            #Check population growth and keep anything with less debris than a block-laying switch engine
                            pop = int(g.getpop())
                            g.run(2880)
                            #g.note(str(pop) + "\n\n" + g.getpop())
                            if int(g.getpop()) < pop + 320:
                                solutions.append(pat)
                n += 1
                #Inform the user that something is, in fact, still happening
                if not n%100:
                    g.fit()
                    g.update()
                    g.show(str(n) + " placements tested, " + str(len(solutions)) + " solutions found (press 'c' to copy results to clipboard or 'q' to quit).")
                    event = g.getevent()
                    if event.startswith("key"):
                        evt, ch, mods = event.split()
                        if ch == "c":
                            clear()
                            for i in xrange(len(solutions)):
                                g.putcells(solutions[i], 0, i*200)
                            g.select(g.getrect())
                            g.copy()
                        if ch == "q":
                            raise KeyboardInterrupt() #Technically true
#Ensure that solutions always get printed and (in prior versions of the script) facilitate breaking out of multiple loops
except KeyboardInterrupt:
    pass
#Print solutions, obviously
g.new("Solutions")
for i in xrange(len(solutions)):
    g.putcells(solutions[i], 0, i*200)
My guess is that either 1) I got incredibly lucky or 2) no one's run any kind of systematic search of this kind before.
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...

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

Re: Spaceship Discussion Thread

Post by dvgrn » December 31st, 2017, 11:49 am

A for awesome wrote:2-engine Cordership, minimum population 100:

Code: Select all

x = 41, y = 49, rule = B3/S23
19b2o$19b4o$19bob2o2$20bo$19b2o$19b3o$21bo$33b2o$33b2o7$36bo$35b2o$34b
o3bo$35b2o2bo$40bo$37bobo$38bo$38bo$38b2o$38b2o3$13bo10bo$12b5o5bob2o
11bo$11bo10bo3bo9bo$12b2o8b3obo9b2o$13b2o9b2o12bo$2o13bo21b3o$2o35b3o
7$8b2o$8b2o11b2o$19b2o2bo$24bo3bo$18bo5bo3bo$19bo2b2o3bobo$20b3o5bo$
28bo!
An amazing discovery! If you listen carefully, you'll be able to hear the sound of forty-six years' worth of dedicated Lifenthusiasts all feeling very silly that they didn't run that search already, just in case.

EDIT: Here's a (probably) slightly cheaper predecessor. The smoke seems fairly tenacious, so it will might take an automated search to come up with the least expensive synthesis.

Code: Select all

x = 61, y = 48, rule = B3/S23
16bo$15bobo$14b2ob2o$14b2ob2o$13b3o$13b3o3bo$13b3o4bo$14b2o5bo$14b3o$
15b2o$16b2o3$16bo$15b3o$14bo3bo$18b2o$17b2o$3o$4bo$4b2o$4bo2bo$5bobo$
5bo$4b2o$3bobo$5b2o$2b2o$4bo17$58b3o$58bo$59bo!

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

Re: Spaceship Discussion Thread

Post by dvgrn » December 31st, 2017, 12:30 pm

dvgrn wrote:EDIT: Here's a (probably) slightly cheaper predecessor. The smoke seems fairly tenacious, so it might take an automated search to come up with the least expensive synthesis.
Here's the first synthesis I finished -- six gliders for the two switch engines, and seven for the cleanup. It can be improved, um, quite a bit:

Code: Select all

#C Seeds of Destruction
x = 156, y = 159, rule = LifeHistory
19.A.A$20.2A$20.A28.A$48.A$48.3A2$A$.2A$2A$42.A$42.A.A$42.2A
16$52.2A$52.A.A$52.A18$45.3A$45.A$46.A27$104.A$103.2A$103.A.
A4$115.3A$115.A$116.A5$108.3A$108.A$109.A27$96.2A$96.A.A$96.
A51.3A$148.A$149.A8$131.2A$131.A.A$131.A24$153.2A$153.A.A$
153.A!

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

Re: Spaceship Discussion Thread

Post by praosylen » December 31st, 2017, 1:11 pm

An improved version of the script that finds more puffers faster (and potentially other ships):

Code: Select all

import golly as g
from random import randint
def nest(cl):
    rtn = []
    if len(cl) % 2:
        for i in xrange(len(cl)/3):
            rtn.append((cl[i*3],cl[i*3+1],cl[i*3+2]))
    else:
        for i in xrange(len(cl)/2):
            rtn.append((cl[i*2],cl[i*2+1]))
    return rtn
def flatten(cl):
    rtn = []
    for i in cl:
        rtn += list(i)
    if len(cl[0]) == 3 and not len(rtn) % 2:
        rtn.append(0)
    return rtn
#I wish Golly had an easy built-in way of doing this.
def clear():
    g.setgen("0")
    g.select(g.getrect())
    if not g.getselrect(): return
    g.clear(0)
    g.select([])
se = [0,0,1,0,2,0,1,1,4,1,5,2,2,3,4,3]
solutions = []
n = 0
g.new("Switch engine testing grounds")
#I'm too lazy to go through and fix all of the indentation here.
try:
    #for i in xrange(96):
    #    for x in xrange(50):
    #        for y in xrange(-x, 1):
            while True:
                #for _ in xrange(10):
                if True:
                    #Generation
                    i = randint(0, 48)
                    #Orientation (otherwise some solutions would be skipped)
                    o = randint(0, 2)
                    #Close but not too close
                    x = randint(10, 30)
                    y = randint(-x, min(x-20,1))
                    clear()
                    g.putcells(g.evolve(se, i))
                    if o:
                        #Flip diagonally
                        g.select(g.getrect())
                        g.flip(0)
                        g.rotate(1)
                        g.select([])
                    g.putcells(se, x, y)
                    '''g.fit()
                    g.update()
                    g.note("")'''
                    c = nest(g.getcells(g.getrect()))
                    #g.select([20,-40,7,7])
                    #g.randfill(50)
                    g.select([0,-20,7,7])
                    g.randfill(50)
                    g.select([])
                    pat = g.getcells(g.getrect())
                    #Repeatedly test for switch engine continued survival
                    for cyc in xrange(1, 31):
                        g.run(96)
                        c2 = nest(g.getcells(g.getrect()))
                        #g.note(str(c) + "\n\n" + str(c2))
                        for j in c:
                            if (j[0]+8*cyc, j[1]+8*cyc) not in c2: #Something's wrong
                                #g.note(str((j[0]+8*cyc, j[1]+8*cyc)) + "\n\n" + str(c2))
                                break
                        else:
                            #Everything's okay, let's advance 96 gens and try again
                            continue
                        #We've broken from the inner loop if we're here, which means we're done beating a dead horse
                        break
                    else: #A likely candidate
                        #Advance a while longer and repeat the check for continued SE survival
                        g.run(9600)
                        c2 = nest(g.getcells(g.getrect()))
                        #g.note(str(c) + "\n\n" + str(c2))
                        #g.note(g.getgen())
                        for j in c:
                            if (j[0]+1040, j[1]+1040) not in c2:
                                #g.note(str((j[0]+8*cyc, j[1]+8*cyc)) + "\n\n" + str(c2))
                                break
                        else: #SE's are still active, so this is *almost* certainly a puffer
                            #Check population growth and keep anything with less debris than a block-laying switch engine
                            pop = int(g.getpop())
                            g.run(2880)
                            #g.note(str(pop) + "\n\n" + g.getpop())
                            if int(g.getpop()) < pop + 320:
                                solutions.append(pat)
                n += 1
                #Inform the user that something is, in fact, still happening
                if not n%100:
                    g.fit()
                    g.update()
                    g.show(str(n) + " placements tested, " + str(len(solutions)) + " solutions found (press 'c' to copy results to clipboard or 'q' to quit).")
                    event = g.getevent()
                    if event.startswith("key"):
                        evt, ch, mods = event.split()
                        if ch == "c":
                            clear()
                            for i in xrange(len(solutions)):
                                g.putcells(solutions[i], 0, i*200)
                            g.select(g.getrect())
                            g.copy()
                        if ch == "q":
                            raise KeyboardInterrupt() #Technically true
#Ensure that solutions always get printed and (in prior versions of the script) facilitate breaking out of multiple loops
except KeyboardInterrupt:
    pass
#Print solutions, obviously
g.new("Solutions")
for i in xrange(len(solutions)):
    g.putcells(solutions[i], 0, i*200)
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...

AbhpzTa
Posts: 592
Joined: April 13th, 2016, 9:40 am
Location: Ishikawa Prefecture, Japan

Re: Spaceship Discussion Thread

Post by AbhpzTa » December 31st, 2017, 1:25 pm

dvgrn wrote:
dvgrn wrote:EDIT: Here's a (probably) slightly cheaper predecessor. The smoke seems fairly tenacious, so it might take an automated search to come up with the least expensive synthesis.
Here's the first synthesis I finished -- six gliders for the two switch engines, and seven for the cleanup. It can be improved, um, quite a bit:

Code: Select all

#C Seeds of Destruction
x = 156, y = 159, rule = LifeHistory
19.A.A$20.2A$20.A28.A$48.A$48.3A2$A$.2A$2A$42.A$42.A.A$42.2A
16$52.2A$52.A.A$52.A18$45.3A$45.A$46.A27$104.A$103.2A$103.A.
A4$115.3A$115.A$116.A5$108.3A$108.A$109.A27$96.2A$96.A.A$96.
A51.3A$148.A$149.A8$131.2A$131.A.A$131.A24$153.2A$153.A.A$
153.A!

6G 2 switch engines + 3G clean up = 9G:

Code: Select all

x = 175, y = 167, rule = B3/S23
37bo$38b2o134bo$37b2o133b2o$173b2o16$71bobo$72b2o$72bo$165bo$163b2o$
164b2o14$65bo$66b2o$65b2o2$144bobo$144b2o$145bo75$166b3o$166bo$167bo4$
147b2o$147bobo$147bo37$bo$b2o$obo!
100009436650194649 = 94649 * 1056634900001

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

Re: Spaceship Discussion Thread

Post by dvgrn » December 31st, 2017, 1:34 pm

AbhpzTa wrote:
dvgrn wrote:EDIT: Here's a (probably) slightly cheaper predecessor. The smoke seems fairly tenacious, so it might take an automated search to come up with the least expensive synthesis.
6G 2 switch engines + 3G clean up = 9G:

Code: Select all

x = 175, y = 167, rule = B3/S23
37bo$38b2o134bo$37b2o133b2o$173b2o16$71bobo$72b2o$72bo$165bo$163b2o$
164b2o14$65bo$66b2o$65b2o2$144bobo$144b2o$145bo75$166b3o$166bo$167bo4$
147b2o$147bobo$147bo37$bo$b2o$obo!
Oh, good -- that's much better. A 9-glider two-engine Cordership synthesis -- that's two new records. And now the table of spaceship recipes under Glider synthesis is incomplete again...
dvgrn wrote:... six gliders for the two switch engines, and seven for the cleanup. It can be improved, um, quite a bit...
For a construction from three directions, here's a more organized and efficient cleanup with five gliders, so 11 gliders for the whole recipe. I haven't run a full gencols (or other) search -- it's quite possible that each pair of gliders on the right can be replaced by a single glider, making a faster 9G recipe:

Code: Select all

x = 118, y = 104, rule = B3/S23
20bo$21b2o$20b2o$48bo$48bobo$48b2o2$obo$b2o$bo40bo$41bo$41b3o16$51b3o$
51bo$52bo17$45b2o$45bobo$45bo10$96bo$95b2o$95bobo11$99b3o$99bo$100bo$
112bo$111b2o$111bobo11$115b3o$115bo$116bo12$89b2o$88b2o$90bo!
The idea here is one that often works well for Cordership syntheses. Basically, pretend that the spaceship is already complete, and then find a cheap way to replace any pieces that don't actually exist yet after the initial switch engine construction, using supporting gliders.

But at best I think this method will only tie with AbhpzTa's solution -- a two-glider cleanup seems possible, but maybe not terribly likely.

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

Re: Spaceship Discussion Thread

Post by gmc_nxtman » December 31st, 2017, 1:57 pm

Congratulations! The new glider syntheses are very nice as well.

Naszvadi
Posts: 1244
Joined: May 7th, 2016, 8:53 am
Contact:

Re: Spaceship Discussion Thread

Post by Naszvadi » December 31st, 2017, 2:09 pm

A for awesome wrote:2-engine Cordership, minimum population 100:

Code: Select all

rle
...
Awesome! Pattern of the year entry.

User avatar
Macbi
Posts: 903
Joined: March 29th, 2009, 4:58 am

Re: Spaceship Discussion Thread

Post by Macbi » December 31st, 2017, 2:17 pm

Naszvadi wrote:
A for awesome wrote:2-engine Cordership, minimum population 100:

Code: Select all

rle
...
Awesome! Pattern of the year entry.
Are the years UTC, or do we use the timezone of the discoverer?

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

Re: Spaceship Discussion Thread

Post by praosylen » December 31st, 2017, 2:27 pm

Macbi wrote:Are the years UTC, or do we use the timezone of the discoverer?
In my case, it's 2017 either way, so it doesn't matter.
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...

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

Re: Spaceship Discussion Thread

Post by AforAmpere » December 31st, 2017, 4:11 pm

Congratulations! I thought no more discoveries in 2017, and there it is. Nice find.
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
dvgrn
Moderator
Posts: 10610
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: Spaceship Discussion Thread

Post by dvgrn » December 31st, 2017, 5:53 pm

Getting a few trivial details out of the way:

Like the 3-engine Cordership, the two engines can be stopped by a single glider from behind without releasing any gliders or spaceships. If someone could find the cases where the smallest amount of junk is produced, that would be great:

Code: Select all

x = 71, y = 76, rule = LifeHistory
15.A$13.2A.2A$13.2A.2A$13.2A$15.2A.A$16.A2.A$16.A2.A$17.2A
12.2A$31.2A4$15.3A2$15.A.A$16.A22.2A$17.A21.2A$17.2A$14.A.2A
.A$.3A10.4A.2A$A3.A10.5A$A3.A12.2A13.3A$A3.A25.6A$30.3A2.2A$
.2A.2A22.A6.2A$2.A2.A21.2A4.3A$3.A.A21.2A4.A$4.2A26.2A$.A3.A
25.A$A.A.A.A23.2A$.A29.2A$30.A$29.2A$29.2A$26.A$26.A$24.3A$
24.2A$24.A2.A.A$26.3A$6.2A18.A$6.2A$19.5A$21.3A$18.A2.3A$18.
2A2.A$20.3A$21.A6$25.2A$25.A.A$25.A18$69.A$68.2A$68.A.A!
#C [[ AUTOFIT HISTORYFIT ]]
The above is just the first example that worked, and already it will significantly reduce the cost of projects like the Spaceship Made of Gliders and the eventual quadratic-growth replicator. The next trick will be to come up with the cheapest and cleanest possible one-glider seed for this new Cordership, so that it can be constructed with a slow salvo.

Not too surprisingly, an eater for the 2-engine Cordership turns out to be fairly trivial. EDIT simplified by removing a useless block, and replacing the overkill eater2s -- thanks, Blinkerspawn and Sokwe:

Code: Select all

x = 99, y = 94, rule = B3/S23
34b2o$13bo20b2o$13b3o$16bo$15b2o4$42b2o$42b2o5$o$3o$3bo$2b2o20$5b2o$5b
2o12$65bo$64b3o$63b2ob2o$64b3o14bo$65bo14b3o$65bobo11bo3bo$65b4o9b2o2b
3o$68bo10bo3bo$79bo2bo$64b2ob2o11bobo6b2o$63bo5bo19b2o$64bo3bo$65bo2$
80bob2o$79b5o$79b4o$51bo42b2o$51b4o6bo18b3o14bo$51bo3bo5bo18b3o9bo4bo$
81bo4b2o4bo5bo$53b3o29b3o4bo3b2o$84b4o6bob2o$82b2o2b3obo$82b2obo2b2o$
81b2o6bo$82bo2bo$83b3o$77b2o$77b2o$76bo2bo$76bob2o$73b3o$74b2o$56b2o9b
2o2bo$56b2o5b2obo4b2o$67bobob2o$69b2o5$64b2o$64b2o!
#C [[ STEP 9 ]]
I don't immediately see a good clean 2-engine to swimmer conversion, though -- will have to get some extra glider signals from somewhere to clean up a little extra junk (or find something better than this):

Code: Select all

x = 151, y = 156, rule = B3/S23
22b2o$21bobo$22bo6$30b2o$29bobo$30bo3$bo$obo$2o$38b2o$37bobo$38bo3$9bo
$8bobo$8b2o$46b2o$45bobo$46bo3$17bo$16bobo$16b2o$54b2o$53bobo$54bo3$
25bo$24bobo$24b2o$62b2o$61bobo$62bo3$33bo$32bobo$32b2o$70b2o$69bobo$
70bo3$41bo$40bobo$40b2o$78b2o$77bobo$78bo3$49bo$48bobo35b2o$48b2o36b2o
6$57bo$56bobo35b2o$56b2o36b2o2$53bo$52bobo$52bobo$50b3ob2o$49bo$50b3ob
2o$52bob2o12$49b2o$49b2o7$57b2o$57b2o12$117bo$116b3o$115b2ob2o$116b3o
14bo$117bo14b3o$117bobo11bo3bo$117b4o9b2o2b3o$120bo10bo3bo$131bo2bo$
116b2ob2o11bobo6b2o$115bo5bo19b2o$116bo3bo$117bo2$132bob2o$131b5o$131b
4o$103bo42b2o$103b4o6bo18b3o14bo$103bo3bo5bo18b3o9bo4bo$133bo4b2o4bo5b
o$105b3o29b3o4bo3b2o$136b4o6bob2o$134b2o2b3obo$134b2obo2b2o$133b2o6bo$
134bo2bo$135b3o$129b2o$129b2o$128bo2bo$128bob2o$125b3o$126b2o$108b2o9b
2o2bo$108b2o5b2obo4b2o$119bobob2o$121b2o5$116b2o$116b2o!
#C [[ STEP 9 STOP 1366 ]]
And we could still use a better clean Cordership-to-glider than the awkward one based on a swimmer-to-glider, anyway.

A Heisenburp device that can detect a passing 2-engine Cordership would be nice. EDIT2: ... And I completely forgot that Extrementhusiast already built a perfectly good one five years ago:

Code: Select all

#C Extrementhusiast's Model D heisenburp, updated for 2-engine Corderships
x = 207, y = 181, rule = LifeHistory
107.2A$107.2A3$105.2A$105.2A$92.2A64.A$93.A64.3AB$93.A.A65.A$94.2A64.
2A$90.2A$90.2A7$103.2A$103.2A29.2A$96.2A36.2A$95.A2.A$96.2A74.2A$123.
A48.2A$122.A.A$122.2A$131.2A$131.A19.2A$132.A17.A.A$131.2A17.A$96.2A
51.2A$96.2A14$164.A.2A$164.2A.A2$162.5A$140.2A20.A4.A2.2A$141.A23.A2.
A2.A$141.A.A21.2A.A.A$142.2A18.A5.A.2A$161.A.A4.A$161.A2.A2.2A$162.2A
$131.2A$132.A$132.A.A$133.2A2$151.2A$151.2A12$142.A$141.A.A$141.A.A$
142.A9$48.A$48.3A$51.A$50.2A$46.2A19.2A$46.2A19.A17.2A$65.A.A17.A$65.
2A19.A$45.A39.2A$44.A.A$45.A$42.3A$42.A2$82.2A$82.2A$97.2A$44.2A50.A
2.A$44.2A51.2A2$28.2A$29.A$29.A.A$.2A27.2A$.2A2$22.2A65.A$22.A64.3A$
20.A.A63.A$20.2A34.2A28.2A$56.2A3.2A$61.2A3$.2A59.2A$.2A53.2A4.A$56.
2A5.3A10.2A$65.A9.A.A5.2A$31.2A42.A7.2A$31.2A11.2A28.2A$44.A$45.3A40.
A$2.2A43.A36.2A.A.A$.A.A79.A.A.A.A$.A9.2A.A65.A2.A.A.A.A.2A$2A9.2A.3A
63.4A.2A2.A2.A$17.A66.A4.2A$11.2A.3A65.A.A$10.A2.2A67.2A$10.2A3$180.A
.A$179.A2.A$180.A.A$196.2A$196.A.A$182.A13.3A$181.A.2A11.A2.A$181.A.
2A12.A$167.3A10.A3.A12.A7.2A$168.A12.4A20.2A$168.A2.A9.3A15.A$168.A2.
A24.A$169.A.A24.A2.A$184.2A9.3A$184.2A9.3A$195.A2.A$196.A.A$168.A27.
3A$167.A.A$168.A$185.A$185.A$166.4A$166.2A3.A13.A$167.A4.A11.A.A$169.
A.2A11.A$170.A15.2A$187.A$184.3A$185.2A$182.A$182.2A$182.2A$172.2A6.
2A$172.2A4.2A$178.2A.A$180.2A5$180.2A$180.2A!
#C [[ STEP 9 AUTOSTART STOP 2300 X -11 Y -26 ]]
This device could easily send signals forward on both sides to catch up with the Cordership, allowing for different kinds of converters with reasonable-ish recovery time. Could even build silly things like Cordership period multipliers, by using gliders and/or *WSSes to shoot down most Corderships that pass by, leaving only every Nth one.

A catfind, ptbsearch, or Bellman search might possibly locate a clean Heisenburp device based on a transparent block or beehive (or whatever). But until the search is actually done that's more of a dream than a hope.

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

Re: Spaceship Discussion Thread

Post by Saka » December 31st, 2017, 10:33 pm

The script gave a false positive (?)

Code: Select all

x = 38, y = 30, rule = B3/S23
3bob2obo$2bobo$2bob5o$2bob2obo24b3o$4b4o25bo2bo$5b4o28bo$4b3o27bobo8$
4bo$6bo$3bo$2b2ob2o$4bo2$3b2o$2bo$2bo2bo$2obo$2bo2b3o$2o$6b2o$3b2ob2o$
4bobo$5bo!

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

Re: Spaceship Discussion Thread

Post by praosylen » December 31st, 2017, 10:53 pm

Saka wrote:The script gave a false positive (?)

Code: Select all

x = 38, y = 30, rule = B3/S23
3bob2obo$2bobo$2bob5o$2bob2obo24b3o$4b4o25bo2bo$5b4o28bo$4b3o27bobo8$
4bo$6bo$3bo$2b2ob2o$4bo2$3b2o$2bo$2bo2bo$2obo$2bo2b3o$2o$6b2o$3b2ob2o$
4bobo$5bo!
Sorry, it sometimes does that (especially when a puffer dies sometime between cycles 130 and 150). Cases like that are rare enough that it's not as necessary to filter them out, although filtering them out isn't a bad idea.
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...

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

Re: Spaceship Discussion Thread

Post by Saka » January 1st, 2018, 1:52 am

I ran a "short" search of about 3 hours while I was away and it found 39 results. 1 was a false positive, the others were puffers. I restarted the search for some reason but the 39 results are available in the text file attached. I did not count how many were duplicates so there might be some duplicates.
Results1.txt
(5.33 KiB) Downloaded 541 times
EDIT: I rediscovered the 2-engine cordership!
Also, could someone post the part of the script that detects if it is a solution?

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

Re: Spaceship Discussion Thread

Post by praosylen » January 1st, 2018, 10:29 am

Saka wrote:Also, could someone post the part of the script that detects if it is a solution?
It's a bit more complicated than that, unfortunately -- basically half of the script is involved in the ruling out of non-solutions, and when that part is done, it treats everything else as a solution. The part that might be most easily (and useful-ly) changeable would be the population growth cutoff. The line should read

Code: Select all

if int(g.getpop()) < pop + 320:
. Setting the number to lower values should give you less puffers with less debris, and higher values should give more puffers and more debris. (To be precise, the number represents the population growth rate per 2880 gens or 20 counts of 96.) Setting it to 0 will give you only ships (if more exist) and false positives.
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...

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

Re: Spaceship Discussion Thread

Post by dvgrn » January 1st, 2018, 2:20 pm

Have been looking into 2-engine Cordership seed constellations, and the news is pretty good. A 2-glider seed is just 11 small still lifes at most --

Code: Select all

x = 45, y = 47, rule = B3/S23
21bo$20bobo$20b2o4$17bo$16bobo13b2o$17b2o13b2o3$17bo$16bobo$17b2o2$40b
2o$40b2o5$22b2o$22b2o$42b2o$7bo4bo29bobo$6bobo2bobo28bo$7b2o3b2o2$b2o$
obo$bo2$18b2o$17bo2bo$18b2o6$7b2o$7b2o3$18b2o$18bobo$18bo!
Or even 9sL, if it's okay to make the constellation a little wider, but I think the "saved" turners will just be added back in later in the conversion to a one-glider seed anyway:

Code: Select all

x = 47, y = 56, rule = B3/S23
45bo$44bo$44b3o15$22bo$21bobo13b2o$22b2o13b2o3$22bo$21bobo$22b2o2$45b
2o$45b2o5$27b2o$27b2o2$12bo4bo$11bobo2bobo$12b2o3b2o6$23b2o$22bo2bo$
23b2o6$12b2o$12b2o$3o$2bo$bo!
Then it's just a matter of hunting through simsim314's nice labeled splitter collection for the correct timing of splitter, plus a couple more boats to put the results on the right lane. That makes a fairly compact 15sL Cordership seed:

Code: Select all

x = 62, y = 61, rule = B3/S23
21bo$20bobo$20b2o4$17bo$16bobo13b2o$17b2o13b2o3$17bo$16bobo$17b2o2$40b
2o$40b2o2$45b2o$45bobo$23bo22bo$22bobo$22b2o2$7bo4bo$6bobo2bobo$7b2o3b
2o2$b2o$obo$bo2$18b2o$18bobo16bo$19bo16bobo$37b2o3$30bo$29bobo$7b2o21b
o$7b2o11$17b2o$17bobo$18bo4$59b2o$59bobo$59bo!
It's a little more expensive per switch engine, because the 2-engine Cordership is a lot more delicately balanced than Paul Tooke's three engines. If you put those three in place, the Cordership basically just takes off.

For the new Cordership the two engines' combined exhaust has to be carefully encouraged to burn correctly. Anyone see any better ways to do this? The two white still lifes in the following version are just getting rid of a nasty non-spark that eventually becomes the usual Herschel plus a blinker:

Code: Select all

x = 62, y = 61, rule = LifeHistory
21.A$20.A.A$20.2A4$17.A$16.A.A13.2A$17.2A13.2A3$17.A$16.A.A$17.2A2$
40.2A$40.2A2$45.2A$45.A.A$46.A$22.2C$22.2C2$7.A4.A$6.A.A2.A.A$7.2A3.
2A2$.2A$A.A$.A2$18.2C$17.C2.C16.A$18.2C16.A.A$37.2A3$30.A$29.A.A$7.2A
21.A$7.2A11$17.2A$17.A.A$18.A4$59.2A$59.A.A$59.A!
I haven't checked yet whether those two still lifes can be replaced by one lucky one (except for some fiddling around with Seeds of Destruction, which didn't turn anything up immediately.) Also AbhpzTa's three cleanup gliders can maybe be simulated by some smaller number of still lifes. I didn't look very hard once I found that the spaceship's standard blocks were conveniently out of the way of the two trigger gliders.

Even at 15sL, this seed will have a relatively short slow-salvo construction recipe. Unlike the old 3-engine Cordership seed, this one is easily narrow enough to be constructed and triggered in any orientation with simeks' 0-degree construction arm recipes. So this makes another significant step toward a workable SMOS (self-synthesizing spaceship) and/or a quadratic-growth replicator.

Post Reply