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: 1907
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: 1049
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 and wildmyron manage the 5S project, which collects all known spaceship speeds in Isotropic Non-totalistic rules.

Things to work on:
- Find a (7,1)c/8 ship in a Non-totalistic rule
- Finish a rule with ships with period >= f_e_0(n) (in progress)

Sokwe
Moderator
Posts: 1480
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: 1049
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 and wildmyron manage the 5S project, which collects all known spaceship speeds in Isotropic Non-totalistic rules.

Things to work on:
- Find a (7,1)c/8 ship in a Non-totalistic rule
- Finish a rule with ships with period >= f_e_0(n) (in progress)

User avatar
A for awesome
Posts: 1902
Joined: September 13th, 2014, 5:36 pm
Location: 0x-1
Contact:

Re: Spaceship Discussion Thread

Post by A for awesome » 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!
x₁=ηx
V ⃰_η=c²√(Λη)
K=(Λu²)/2
Pₐ=1−1/(∫^∞_t₀(p(t)ˡ⁽ᵗ⁾)dt)

$$x_1=\eta x$$
$$V^*_\eta=c^2\sqrt{\Lambda\eta}$$
$$K=\frac{\Lambda u^2}2$$
$$P_a=1-\frac1{\int^\infty_{t_0}p(t)^{l(t)}dt}$$

http://conwaylife.com/wiki/A_for_all

Aidan F. Pierce

User avatar
Macbi
Posts: 699
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: 49
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
A for awesome
Posts: 1902
Joined: September 13th, 2014, 5:36 pm
Location: 0x-1
Contact:

Re: Spaceship Discussion Thread

Post by A for awesome » 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.
x₁=ηx
V ⃰_η=c²√(Λη)
K=(Λu²)/2
Pₐ=1−1/(∫^∞_t₀(p(t)ˡ⁽ᵗ⁾)dt)

$$x_1=\eta x$$
$$V^*_\eta=c^2\sqrt{\Lambda\eta}$$
$$K=\frac{\Lambda u^2}2$$
$$P_a=1-\frac1{\int^\infty_{t_0}p(t)^{l(t)}dt}$$

http://conwaylife.com/wiki/A_for_all

Aidan F. Pierce

User avatar
dvgrn
Moderator
Posts: 5889
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: 5889
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
A for awesome
Posts: 1902
Joined: September 13th, 2014, 5:36 pm
Location: 0x-1
Contact:

Re: Spaceship Discussion Thread

Post by A for awesome » 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)
x₁=ηx
V ⃰_η=c²√(Λη)
K=(Λu²)/2
Pₐ=1−1/(∫^∞_t₀(p(t)ˡ⁽ᵗ⁾)dt)

$$x_1=\eta x$$
$$V^*_\eta=c^2\sqrt{\Lambda\eta}$$
$$K=\frac{\Lambda u^2}2$$
$$P_a=1-\frac1{\int^\infty_{t_0}p(t)^{l(t)}dt}$$

http://conwaylife.com/wiki/A_for_all

Aidan F. Pierce

AbhpzTa
Posts: 475
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!
Iteration of sigma(n)+tau(n)-n [sigma(n)+tau(n)-n : OEIS A163163] (e.g. 16,20,28,34,24,44,46,30,50,49,11,3,3, ...) :
965808 is period 336 (max = 207085118608).

User avatar
gameoflifemaniac
Posts: 775
Joined: January 22nd, 2017, 11:17 am
Location: There too

Re: Spaceship Discussion Thread

Post by gameoflifemaniac » December 31st, 2017, 1:30 pm

This is a post that I wanted to delete, but couldn't because it was already replied. Sorry!
Last edited by gameoflifemaniac on December 31st, 2017, 1:38 pm, edited 1 time in total.
https://www.youtube.com/watch?v=q6EoRBvdVPQ
One big dirty Oro. Yeeeeeeeeee...

User avatar
dvgrn
Moderator
Posts: 5889
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: 1147
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: 380
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: 699
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
A for awesome
Posts: 1902
Joined: September 13th, 2014, 5:36 pm
Location: 0x-1
Contact:

Re: Spaceship Discussion Thread

Post by A for awesome » 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.
x₁=ηx
V ⃰_η=c²√(Λη)
K=(Λu²)/2
Pₐ=1−1/(∫^∞_t₀(p(t)ˡ⁽ᵗ⁾)dt)

$$x_1=\eta x$$
$$V^*_\eta=c^2\sqrt{\Lambda\eta}$$
$$K=\frac{\Lambda u^2}2$$
$$P_a=1-\frac1{\int^\infty_{t_0}p(t)^{l(t)}dt}$$

http://conwaylife.com/wiki/A_for_all

Aidan F. Pierce

AforAmpere
Posts: 1049
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 and wildmyron manage the 5S project, which collects all known spaceship speeds in Isotropic Non-totalistic rules.

Things to work on:
- Find a (7,1)c/8 ship in a Non-totalistic rule
- Finish a rule with ships with period >= f_e_0(n) (in progress)

User avatar
dvgrn
Moderator
Posts: 5889
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.

Saka
Posts: 3138
Joined: June 19th, 2015, 8:50 pm
Location: In the kingdom of Sultan Hamengkubuwono X

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!
Airy Clave White It Nay

Code: Select all

x = 17, y = 10, rule = B3/S23
b2ob2obo5b2o$11b4obo$2bob3o2bo2b3o$bo3b2o4b2o$o2bo2bob2o3b4o$bob2obo5b
o2b2o$2b2o4bobo2b3o$bo3b5ob2obobo$2bo5bob2o$4bob2o2bobobo!
(Check gen 2)

User avatar
A for awesome
Posts: 1902
Joined: September 13th, 2014, 5:36 pm
Location: 0x-1
Contact:

Re: Spaceship Discussion Thread

Post by A for awesome » 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.
x₁=ηx
V ⃰_η=c²√(Λη)
K=(Λu²)/2
Pₐ=1−1/(∫^∞_t₀(p(t)ˡ⁽ᵗ⁾)dt)

$$x_1=\eta x$$
$$V^*_\eta=c^2\sqrt{\Lambda\eta}$$
$$K=\frac{\Lambda u^2}2$$
$$P_a=1-\frac1{\int^\infty_{t_0}p(t)^{l(t)}dt}$$

http://conwaylife.com/wiki/A_for_all

Aidan F. Pierce

Saka
Posts: 3138
Joined: June 19th, 2015, 8:50 pm
Location: In the kingdom of Sultan Hamengkubuwono X

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 339 times
EDIT: I rediscovered the 2-engine cordership!
Also, could someone post the part of the script that detects if it is a solution?
Airy Clave White It Nay

Code: Select all

x = 17, y = 10, rule = B3/S23
b2ob2obo5b2o$11b4obo$2bob3o2bo2b3o$bo3b2o4b2o$o2bo2bob2o3b4o$bob2obo5b
o2b2o$2b2o4bobo2b3o$bo3b5ob2obobo$2bo5bob2o$4bob2o2bobobo!
(Check gen 2)

User avatar
A for awesome
Posts: 1902
Joined: September 13th, 2014, 5:36 pm
Location: 0x-1
Contact:

Re: Spaceship Discussion Thread

Post by A for awesome » 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.
x₁=ηx
V ⃰_η=c²√(Λη)
K=(Λu²)/2
Pₐ=1−1/(∫^∞_t₀(p(t)ˡ⁽ᵗ⁾)dt)

$$x_1=\eta x$$
$$V^*_\eta=c^2\sqrt{\Lambda\eta}$$
$$K=\frac{\Lambda u^2}2$$
$$P_a=1-\frac1{\int^\infty_{t_0}p(t)^{l(t)}dt}$$

http://conwaylife.com/wiki/A_for_all

Aidan F. Pierce

Post Reply