"Solid" LTL Ships

For discussion of other cellular automata.
Post Reply
User avatar
Saka
Posts: 3430
Joined: June 19th, 2015, 8:50 pm
Location: In the kingdom of Sultan Hamengkubuwono X
Contact:

"Solid" LTL Ships

Post by Saka » September 7th, 2017, 9:09 am

Another "Collection" thread of mine :) . THis thread is for "solid" ships in LTL rules. Solid ships are ships that consists of a static core with "fire" on the edges that cause the static core to move. Most cores are donut shaped.
An example is SlowShip.rle. These can be found by changing the range of SlowShip.rle. I have made a script specialized to do just that:

Code: Select all

#slowshipconvert.py
#A script to change the range of slowship rules
#DISCLAIMER: Drastic range changes will remove the dynamics.
#Thanks to Dean Hickerson's algorithm!
#By Saka.
from decimal import *
import golly as g
getcontext().prec = 8
#Input time
rangeto = int(g.getstring("Range to convert to?","10"))
rangetostr = str(rangeto)
#Now for calculations!
meaningoflife = Decimal((2*Decimal(rangeto)+1)**2/(2*Decimal(10)+1)**2)
newbmin = str(int(round(133*meaningoflife))) #Huh. Decimal to number to integer to string
newbmax = str(int(round(265*meaningoflife)))
newsmin = str(int(round(154*meaningoflife)))
newsmax = str(int(round(262*meaningoflife)))
newrule = "R"+rangetostr+",C0,M1,"+"S"+newsmin+".."+newsmax+","+"B"+newbmin+".."+newbmax+",NM"
g.setrule(newrule)
I have found one in range 17:

Code: Select all

# C/798 diagonal ship
x = 42, y = 43, rule = R17,C0,M1,S428..728,B369..736,NM
20b4o$18b8o$24b3o$21b4o2bo$18b10o$17b9ob2o$16b11o2bo$15b13o2bo$14b15o$
13b16o$12b18o$7bo3b20o$6bo3b22o$5bo3b24o$4b2ob27o$2bobob29o$b18o4b13o$
2ob14o8b12o$2ob13o9b13o$2ob13o10b12o3bo$15o12b12o2bo$o2b12o12b12o2bo$o
2b12o12b12ob2o$o2b13o10b13ob2o$4b12o10b13ob2o$bo3b12o8b14obo$6b13o4b
18o$7b29obobo$8b27ob2o$9b24o3bo$10b22o3bo$11b19o4bo$12b18o$13b16o$13b
15o$11bo2b13o$12bo2b11o$13b2ob9o$14b10o$14bob6o$15b2o$16b8o$18b4o!

Code: Select all

o3b2ob2obo3b2o2b2o$bo3b2obob3o3bo2bo$2bo2b3o5b3ob4o$3o3bo2bo2b3o3b3o$
4bo4bobo4bo$2o2b2o2b4obo2bo3bo$2ob4o3bo2bo2bo2bo$b2o3bobob2o$3bobobo5b
obobobo$3bobobob2o3bo2bobo!
(Check gen 3)
Add your computer to the Table of Lifeenthusiast Computers!

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

Re: "Solid" LTL Ships

Post by Saka » September 7th, 2017, 11:59 pm

A c/474 diagonal

Code: Select all

# c/474 diagonal ship in an range-17 rule
x = 37, y = 36, rule = R17,C0,M1,S428..729,B369..737,NM
13b4o$11b4o$10b4ob4o5bo$8b14o3b2o$8b16o2b2o$7b23o$6b25o$5b27o$5b28o$4b
30o$4bob29o$3bob31o$2bo2b31o$4b32o$4b30ob2o$4b30ob2o$3b31o2bo$3b31o2bo
$3b31o$o2b31o$o2b30o$2ob30o$b2ob29o$b31o$b31obo$2b31o$3b30o$4b28o$5b
27o$6b25o$7b3ob19o$9b2ob17o$10b2o2b14o$12bo5b4ob4o$22b4o$20b4o!
Very fast one:

Code: Select all

# c/144 orthogonal ship in an range-22 rule
x = 50, y = 50, rule = R22,C0,M1,S707..1203,B611..1217,NM
24b6o$19b14o$17bo6b11o$15bo5b16o$13bo4b20o$11b2o3b23o$10b2o2b26o$9b3ob
28o$7b4ob30o$6b37o$5b35ob3o$5b36ob2o$4b38ob2o$3b40ob2o$2b41o2bo$2b21o
3b18o2bo$b19o9b15o$b18o12b14o2bo$b17o14b13o2bo$17o16b13o$16o17b13o2bo$
16o18b13obo$15o19b13obo$15o19b13obo$15o20b15o$15o20b15o$o2b12o19b16o$o
2b12o19b16o$3b13o18b16o$bob13o17b17o$bo2b13o16b16o$4b14o14b17o$2bo2b
14o12b18o$2bo2b15o9b19o$3bo2b17o3b22o$3bo2b41o$4bo2b40o$5bo2b38o$5b2ob
37o$6b38o$7b32ob3o$7b31ob3o$8b29ob3o$9b26o2b3o$10b24o2b2o$11b21o3b2o$
13b16o5bo$14b12o6bo$16b15o$19b8o!

Code: Select all

o3b2ob2obo3b2o2b2o$bo3b2obob3o3bo2bo$2bo2b3o5b3ob4o$3o3bo2bo2b3o3b3o$
4bo4bobo4bo$2o2b2o2b4obo2bo3bo$2ob4o3bo2bo2bo2bo$b2o3bobob2o$3bobobo5b
obobobo$3bobobob2o3bo2bobo!
(Check gen 3)
Add your computer to the Table of Lifeenthusiast Computers!

User avatar
Andrew
Moderator
Posts: 771
Joined: June 2nd, 2009, 2:08 am
Location: Melbourne, Australia
Contact:

Re: "Solid" LTL Ships

Post by Andrew » September 8th, 2017, 1:26 am

Very nice discoveries, but I really wish you (and muzik) would put all your LtL-related posts in the "Larger than Life" thread.

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

Re: "Solid" LTL Ships

Post by Saka » September 8th, 2017, 1:39 am

Andrew wrote:Very nice discoveries, but I really wish you (and muzik) would put all your LtL-related posts in the "Larger than Life" thread.
The thread is pretty dead. I've made a quintuple post and I don't want a semi-automated warning about a pentadecapost. Will you put these in Golly :D ?

Code: Select all

o3b2ob2obo3b2o2b2o$bo3b2obob3o3bo2bo$2bo2b3o5b3ob4o$3o3bo2bo2b3o3b3o$
4bo4bobo4bo$2o2b2o2b4obo2bo3bo$2ob4o3bo2bo2bo2bo$b2o3bobob2o$3bobobo5b
obobobo$3bobobob2o3bo2bobo!
(Check gen 3)
Add your computer to the Table of Lifeenthusiast Computers!

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

Re: "Solid" LTL Ships

Post by Saka » September 8th, 2017, 5:51 am

c/666 diagonal

Code: Select all

# c/666 diagoanl ship in a range-19 rule
# Saka
x = 43, y = 43, rule = R19,C0,M1,S530..900,B460..920,NM
16b9o$14b9o2b3o$12b13o3b2o$10b17o3b2o$9b20o2b2o$8b23ob3o$7b25ob3o$6b
31o$6b32o$5b2ob31o$4b2ob33o$4bob34o$3bob36o$2bo2b13o7b17o$2bob13o9b16o
$bo2b12o11b15o$bob12o13b15o$bob11o15b14o$ob12o16b13o$ob11o17b13o$13o
17b13o$13o17b13o$13o17b13o$13o17b11obo$13o17b11obo$14o15b11obo$15o13b
12obo$b15o11b13obo$b16o9b13obo$2b16o7b13o2bo$2b36obo$3b34ob2o$4b32ob2o
$4b34o$5b33o$6b3ob27o$7b3ob25o$9b2ob23o$10b2o2b20o$11b2o3b17o$13b2o3b
13o$15b5ob8o$18b9o!
I SCREANED when I ran oscar.lua (Well actually I just gasped a bit but you get the idea)
Not good for our hexakosioihexekontahexaphobic friends...

Can anybody find a ship with range < 10?

Code: Select all

o3b2ob2obo3b2o2b2o$bo3b2obob3o3bo2bo$2bo2b3o5b3ob4o$3o3bo2bo2b3o3b3o$
4bo4bobo4bo$2o2b2o2b4obo2bo3bo$2ob4o3bo2bo2bo2bo$b2o3bobob2o$3bobobo5b
obobobo$3bobobob2o3bo2bobo!
(Check gen 3)
Add your computer to the Table of Lifeenthusiast Computers!

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

Re: "Solid" LTL Ships

Post by Saka » September 8th, 2017, 9:49 pm

Oh wow, 2c/666 diagonal...

Code: Select all

x = 34, y = 34, rule = R15,C0,M1,S336..570,B290..577,NM
12b8o$10b8o$8b12o3bo$7b16o2bo$6b18o2bo$5b24o$4b26o$4bob25o$3bob26o$2bo
b28o$4b28o$3b10o7b13o$3b9o9b12o$2b10o10b11o$ob9o12b11o$11o12b11o$11o
12b11o$11o12b9o$11o12b9o$11o11b9o$12o10b9obo$13o8b10o$b13o5b11obo$b29o
bo$2b27obo$3b25obo$4b23ob2o$5b24o$6b2ob19o$7b2ob17o$8b2o2b14o$10bo4b
10o$12b2o3b6o$17b3o!
WHY???

EDIT:
A really cool property of LTL rules is that 2 objects dont even have to touch each other to do cool things. This happens with solid objects because of the "ring of fire" they have:

Code: Select all

x = 156, y = 119, rule = R22,C0,M1,S707..1203,B611..1217,NM
24b6o$19b14o$17bo6b11o$15bo5b16o$13bo4b20o$11b2o3b23o$10b2o2b26o$9b3ob
28o$7b4ob30o$6b37o$5b35ob3o$5b36ob2o$4b38ob2o$3b40ob2o$2b41o2bo$2b21o
3b18o2bo$b19o9b15o$b18o12b14o2bo$b17o14b13o2bo$17o16b13o$16o17b13o2bo$
16o18b13obo$15o19b13obo$15o19b13obo$15o20b15o$15o20b15o$o2b12o19b16o$o
2b12o19b16o$3b13o18b16o$bob13o17b17o$bo2b13o16b16o$4b14o14b17o$2bo2b
14o12b18o$2bo2b15o9b19o$3bo2b17o3b22o$3bo2b41o$4bo2b40o$5bo2b38o$5b2ob
37o$6b38o$7b32ob3o$7b31ob3o$8b29ob3o$9b26o2b3o$10b24o2b2o$11b21o3b2o$
13b16o5bo$14b12o6bo$16b15o$19b8o20$126b6o$123b14o$121b11o6bo$119b16o5b
o$118b20o4bo$117b23o3b2o$116b26o2b2o$115b28ob3o$114b30ob4o$113b37o$
112b3ob35o$112b2ob36o$111b2ob38o$110b2ob40o$110bo2b41o$109bo2b18o3b21o
$112b15o9b19o$108bo2b14o12b18o$108bo2b13o14b17o$110b13o16b17o$107bo2b
13o17b16o$107bob13o18b16o$107bob13o19b15o$107bob13o19b15o$106b15o20b
15o$106b15o20b15o$106b16o19b12o2bo$106b16o19b12o2bo$106b16o18b13o$106b
17o17b13obo$107b16o16b13o2bo$107b17o14b14o$107b18o12b14o2bo$108b19o9b
15o2bo$108b22o3b17o2bo$109b41o2bo$109b40o2bo$110b38o2bo$111b37ob2o$
112b38o$113b3ob32o$114b3ob31o$115b3ob29o$116b3o2b26o$118b2o2b24o$119b
2o3b21o$121bo5b16o$123bo6b12o$125b15o$129b8o!

Code: Select all

o3b2ob2obo3b2o2b2o$bo3b2obob3o3bo2bo$2bo2b3o5b3ob4o$3o3bo2bo2b3o3b3o$
4bo4bobo4bo$2o2b2o2b4obo2bo3bo$2ob4o3bo2bo2bo2bo$b2o3bobob2o$3bobobo5b
obobobo$3bobobob2o3bo2bobo!
(Check gen 3)
Add your computer to the Table of Lifeenthusiast Computers!

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

Re: "Solid" LTL Ships

Post by Saka » October 11th, 2017, 8:26 am

c/128d, nice round number and new fastest speed record

Code: Select all

x = 33, y = 33, rule = R16,C0,M1,S382..646,B333..656,NM
11bo9bo$9b2o11b2o$8b2o2b9o2b2o$7b2o2b11o2b2o$6b2ob15ob2o$5b2ob17ob2o$
4b2ob19ob2o$3b2ob21ob2o$2bo2b23ob2o$2bob25ob2o$bo2b25o2bo$o2b27o2bo$o
2b28o$2b29o$2b29o$2b29o$2b29o$2b29o$2b29o$2b29o$o2b28o$bo2b26o2bo$bo2b
25o2bo$2b2ob24ob2o$4bob22ob2o$4b2ob20ob2o$5b2ob18ob2o$6b2ob16ob2o$7b2o
b14ob2o$9bo2b10o3bo$9bo3b7o3b2o$10b2o10bo$12bo7b2o!

Code: Select all

o3b2ob2obo3b2o2b2o$bo3b2obob3o3bo2bo$2bo2b3o5b3ob4o$3o3bo2bo2b3o3b3o$
4bo4bobo4bo$2o2b2o2b4obo2bo3bo$2ob4o3bo2bo2bo2bo$b2o3bobob2o$3bobobo5b
obobobo$3bobobob2o3bo2bobo!
(Check gen 3)
Add your computer to the Table of Lifeenthusiast Computers!

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

Re: "Solid" LTL Ships

Post by Saka » October 14th, 2017, 9:19 pm

I finally found something
c/142d

Code: Select all

x = 29, y = 28, rule = R13,C0,M1,S256..433,B222..440,NM
15b5o$8bo3b10o$7bo2b13o$5b2ob16o$4b2ob18o$3b22o$2b22obo$2b23obo$b25o$b
11o5b9obo$b10o7b9o$10o9b8o$10o9b10o$10o9b10o$ob8o9b10o$2b8o9b10o$2b9o
7b11o$bob9o5b11o$3b25o$2bob23o$5b22o$3bob21o$4b19obo$5b17obo$6b14o2bo$
7b11o$8b9o2bo$10b7o!

Code: Select all

o3b2ob2obo3b2o2b2o$bo3b2obob3o3bo2bo$2bo2b3o5b3ob4o$3o3bo2bo2b3o3b3o$
4bo4bobo4bo$2o2b2o2b4obo2bo3bo$2ob4o3bo2bo2bo2bo$b2o3bobob2o$3bobobo5b
obobobo$3bobobob2o3bo2bobo!
(Check gen 3)
Add your computer to the Table of Lifeenthusiast Computers!

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

Re: "Solid" LTL Ships

Post by Saka » December 10th, 2017, 6:43 am

yay more
2c/468d

Code: Select all

x = 34, y = 35, rule = R15,C0,M1,S336..571,B290..577,NM
15b2o$11b10o$9b10o$8b14o2bo$7b17ob2o$6b19ob2o$5b24o$4b26o$4bob25o$3bob
27o$2bob29o$4b11o5b13o$bob10o8b13o$3b9o10b12o$2b9o12b11o$ob9o12b11o$
11o13b10o$10o14b10o$11o13b8obo$11o12b9obo$11o12b9obo$12o10b10o$13o8b
10obo$b13o6b11obo$b29obo$2b27o2bo$3b26obo$4b26o$5b24o$6b2ob20o$7b2ob
18o$9bo2b15o$10bo3b11o$12b2o3b7o$15b6o!
Weehoo a 2c/1122o

Code: Select all

x = 77, y = 77, rule = R32,C0,M1,S1475..2510,B1274..2539,NM
38b5o$35b11o$33b14o$31bo7b10o$45b5o$39b5o4b3o$36b12o2b2o$34b16o2bo$33b
19o$31b22o$30b19ob5o$29b21o2b4o$28b23o3b2o$27b25o3b2o$26b26o$25b28o$
24b30o$23b32o$22b33o$21b35o$13bo6b37o$12b2o5b39o$11b2o4b42o$10b2o4b44o
$7bob3o3b46o$6bob3o2b49o$5b2ob2o2b51o$4b2ob3ob53o$3b3ob2ob26o5b24o$3b
2ob28o9b23o$2b3ob27o11b23o$b31o13b23o$b3ob26o15b22o$b3ob25o17b22o5bo$
4ob24o19b22o4bo$3o2b24o19b22o4b2o$3o2b23o21b22o3b2o$3o2b23o21b22o3b2o$
3o2b23o21b22o3b3o$3o3b22o21b23o2b3o$b2o3b22o21b23o2b3o$b2o3b22o21b23o
2b3o$b2o4b22o19b24o2b3o$2bo4b22o19b24ob4o$2bo5b22o17b25ob3o$9b22o15b
26ob3o$9b23o13b31o$10b23o11b27ob3o$11b23o9b28ob2o$12b24o5b29ob3o$13b
53ob3ob2o$14b51ob3ob2o$15b48o3b3obo$16b46o3b3obo$17b44o4b2o$18b41o5b3o
$19b39o5b3o$20b37o6bo$21b35o$22b33o$23b31o$23b30o$24b28o$20bo4b26o$20b
2o4b24o$21b2o3b23o$21b4o2b21o$22b5ob19o$24b21o$25b19o$24bo2b15o$25b2o
2b11o$26b4o3b3o$27b6o$28b11o5bo$30b14o$32b9o!

Code: Select all

o3b2ob2obo3b2o2b2o$bo3b2obob3o3bo2bo$2bo2b3o5b3ob4o$3o3bo2bo2b3o3b3o$
4bo4bobo4bo$2o2b2o2b4obo2bo3bo$2ob4o3bo2bo2bo2bo$b2o3bobob2o$3bobobo5b
obobobo$3bobobob2o3bo2bobo!
(Check gen 3)
Add your computer to the Table of Lifeenthusiast Computers!

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

Re: "Solid" LTL Ships

Post by Saka » December 11th, 2017, 4:18 am

HORRAY!
RANGE 8!
c/48d!

Code: Select all

x = 19, y = 19, rule = R8,C0,M1,S101..172,B87..174,NM
7bo3b2o$5b9o$3b12o$2b14o$2b15o$b17o$b17o$17obo$b16o$b8ob8o$b16o$17obo$
18o$b17o$2b15o$3b13o$4b11o$5b2o2bo2b2o$7bo3bo!
And it kinda looks like the millenium falcon but really just barely!

My favorite phase:

Code: Select all

x = 35, y = 35, rule = R8,C0,M1,S101..172,B87..174,NM
15b5o$12b11o$10b15o$9b17o$8b19o$6b9o5b8o$5b8o9b7o$5b6o13b6o$4b6o15b6o$
3b6o16b7o$2b6o18b7o$2b5o20b6o$b6o21b6o$b5o23b5o$b5o23b5o$5o24b6o$5o25b
5o$5o25b5o$5o25b5o$5o25b5o$b5o23b6o$b5o23b5o$b6o22b5o$2b5o21b6o$2b6o
19b6o$3b7o16b6o$4b7o14b7o$5b7o12b7o$6b7o10b7o$7b9o4b9o$8b20o$9b18o$10b
15o$12b12o$15b6o!
It isn't fully solid though, it blows up, but it has a core and the rule is from the original R10 rule, so I'll count it

I wrote a tiny program (Well, except the oscar part) and it found this neat R10 c/39o

Code: Select all

x = 23, y = 24, rule = R10,C0,M1,S155..260,B133..265,NM
10b3o$7b9o$5b2ob7obo$4b12obo$3bob14o$2bob16o$2b19o$bob8ob8obo$b8o5b8o$
8o7b6obo$7o9b7o$7o9b7o$7o9b7o$7o9b7o$8o7b6obo$b8o5b8o$bob8ob8obo$2b19o
$2bob16o$3bob14o$4b12obo$5b2ob7obo$7b9o$10b3o!
Oh my god my script is awesome 3c/563o

Code: Select all

# 3c/563 orthogonal ship in a range-11 rule
# Saka
x = 26, y = 25, rule = R11,C0,M1,S185..314,B160..318,NM
9bob3o$11b3o$8b7o$7b10o$5bob11o$4bob13obo$5b15obo$3b18o$2b21o$o2b8o3b
8o2bo$2b8o5b9o$b8o7b9o$8o8b10o$b8o7b9o$2b8o5b9o$o2b8o3b8o2bo$2b21o$3b
18o$5b15obo$4bob13obo$5bob11o$7b10o$8b7o$11b3o$9bob3o!
c/34d in Range 7!!

Code: Select all

x = 15, y = 15, rule = R7,C0,M1,S79..134,B68..135,NM
4b5obo$5b7o$3b8o$2b10obo$ob11o$15o$6o3b5o$6o3b6o$6o3b5o$b14o$14o$bob9o
$4b7o$3bob6o$5bobobo!
My script is awesome! (I'll release it in a bit)

EDIT:
Funny 7c/27o ship I came accross in slowship converted into Range 6. Not solid though.

Code: Select all

x = 14, y = 17, rule = R6,C0,M1,S59..100,B51..102,NM
5b3o$4b6o$6b2o$5b4o$4b6o$3b8o$2b10o$6ob5obo$5o3b6o$6ob5obo$2b10o$3b8o$
4b6o$5b4o$6b2o$4b6o$5b3o!

Code: Select all

o3b2ob2obo3b2o2b2o$bo3b2obob3o3bo2bo$2bo2b3o5b3ob4o$3o3bo2bo2b3o3b3o$
4bo4bobo4bo$2o2b2o2b4obo2bo3bo$2ob4o3bo2bo2bo2bo$b2o3bobob2o$3bobobo5b
obobobo$3bobobob2o3bo2bobo!
(Check gen 3)
Add your computer to the Table of Lifeenthusiast Computers!

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

Re: "Solid" LTL Ships

Post by Saka » December 11th, 2017, 11:06 pm

I improved the script and here it is!

Code: Select all

# Solid.py
# Makes soups and runs oscar until a ship is found
# Seemingly stupid but actually very useful and fast
# Mainly used for searching "Solid" ships in LTL since soups of the right size
# produce only 1 object and separation is not needed so oscar can be run.
# Best fit for solid LTL rules that have lower period oscs that stabilize quicker but can also be used for larger ranges.
# Beeps when a ship is found.
# By Saka with oscar.py code from Andrew Trevorrow.

import golly as g

if len(g.getselrect()) == 0:
    g.exit("No selection!")
else:
    selection = g.getselrect()
    
g.new("Solid")
g.select(selection)
g.fitsel()
result = "Soup"
#maxGen = int(g.getstring("Maximum gens (To avoid expanding soups)")) # Maximum gens and population to avoid expanding soups
maxPop = (selection[2]*selection[3])*10 #This is much, much better
n = -1

while result != "S": #Old and not used anymore but whatever.
    #g.setgen('0')
    n += 1
    if n % 100==0:
        g.show(str(n)+" soups searched")
        g.update()
    g.reset()
    g.randfill(50)
    # The entire code of oscar.py :)
    # Oscar is an OSCillation AnalyzeR for use with Golly.
    # Author: Andrew Trevorrow (andrew@trevorrow.com), March 2006.

    from glife import rect, pattern
    from time import time

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

    # initialize lists
    hashlist = []        # for pattern hash values
    genlist = []         # corresponding generation counts
    poplist = []         # corresponding population counts
    boxlist = []         # corresponding bounding boxes

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

    def show_spaceship_speed(period, deltax, deltay):
        # we found a moving oscillator
        if (deltax == deltay) or (deltax == 0) or (deltay == 0):
            speed = ""
            if (deltax == 0) or (deltay == 0):
                # orthogonal spaceship
                if (deltax > 1) or (deltay > 1):
                    speed += str(deltax + deltay)
            else:
                # diagonal spaceship (deltax == deltay)
                if deltax > 1:
                    speed += str(deltax)
            if period == 1:
                g.show("S")
                g.exit("Found ship with speed " + speed + "c"+" after "+str(n)+" soups.")
            else:
                g.show("S")
                g.exit("Found ship with speed " + speed + "c/" +str(period)+" after "+str(n)+" soups.")
        else:
            # deltax != deltay and both > 0
            speed = str(deltay) + "," + str(deltax)
            if period == 1:
                g.show("S")
                g.exit("Found knightship with speed " + speed + "c"+" after "+str(n)+" soups.")
            else:
                g.show("S")
                g.exit("Found knightship with speed " + speed + "c/" + str(period)+" after "+str(n)+" soups.")

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

    def oscillating():
        # return True if the pattern is empty, stable or oscillating

        # first get current pattern's bounding box
        prect = g.getrect()
        pbox = rect(prect)
        if pbox.empty:
            #g.show("The pattern is empty.")
            return True

        # get current pattern and create hash of "normalized" version -- ie. shift
        # its top left corner to 0,0 -- so we can detect spaceships and knightships

        h = g.hash(prect)

        # check if outer-totalistic rule has B0 but not S8
        rule = g.getrule().split(":")[0]
        hasB0notS8 = rule.startswith("B0") and (rule.find("/") > 1) and not rule.endswith("8")

        # determine where to insert h into hashlist
        pos = 0
        listlen = len(hashlist)
        while pos < listlen:
            if h > hashlist[pos]:
                pos += 1
            elif h < hashlist[pos]:
                # shorten lists and append info below
                del hashlist[pos : listlen]
                del genlist[pos : listlen]
                del poplist[pos : listlen]
                del boxlist[pos : listlen]
                break
            else:
                # h == hashlist[pos] so pattern is probably oscillating, but just in
                # case this is a hash collision we also compare pop count and box size
                if (int(g.getpop()) == poplist[pos]) and \
                   (pbox.wd == boxlist[pos].wd) and \
                   (pbox.ht == boxlist[pos].ht):
                    period = int(g.getgen()) - genlist[pos]

                    if hasB0notS8 and (period % 2 > 0) and (pbox == boxlist[pos]):
                        # ignore this hash value because B0-and-not-S8 rules are
                        # emulated by using different rules for odd and even gens,
                        # so it's possible to have identical patterns at gen G and
                        # gen G+p if p is odd
                        return False

                    if pbox == boxlist[pos]:
                        # pattern hasn't moved
                        if period == 1:
                            pass
                            #g.show("SL")
                        else:
                            pass
                            #g.show("OSC")
                    else:
                        deltax = abs(boxlist[pos].x - pbox.x)
                        deltay = abs(boxlist[pos].y - pbox.y)
                        show_spaceship_speed(period, deltax, deltay)
                    return True
                else:
                    # look at next matching hash value or insert if no more
                    pos += 1

        # store hash/gen/pop/box info at same position in various lists
        hashlist.insert(pos, h)
        genlist.insert(pos, int(g.getgen()))
        poplist.insert(pos, int(g.getpop()))
        boxlist.insert(pos, pbox)

        return False

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

    def fit_if_not_visible():
        # fit pattern in viewport if not empty and not completely visible
        r = rect(g.getrect())
        if (not r.empty) and (not r.visible()): g.fit()

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

    #g.show("Checking for oscillation... (hit escape to abort)")

    oldsecs = time()
    while not oscillating():
        g.run(1)
        newsecs = time()
        #if newsecs - oldsecs >= 1.0:     # show pattern every second
            #oldsecs = newsecs
            #fit_if_not_visible()
            #g.update()
        if int(g.getpop()) > maxPop: #If not: Use int(g.getgen()) > maxGen
            break
Mostly just oscar.py :P
It has found quite a few ships, not released yet, still in my "Solid" folder.
How to use:
1. Use slowshipconvert.py in the top post (here) to convert to the desired range.
2. (Optional) Tweak the limits a bit, +-5 or something.
3. Select an area to search. Make sure that a 50% fill of the area produces only 1 "donut" when you fill it or else oscar will get stuck if it finds a osc+ship or ship+ship. Expanding soups will be skipped using a "smart maxPop" I made.
4. Still selecting the area, run solid.py
5. Wait until a ship is found (It will beep because it uses g.exit)

TODO:
-Display approximate soups/sec
-After a set amount of failed soups, adjust the rule and start over

EDIT:
VERY FAST c/10o with a very thin core found with the script

Code: Select all

x = 28, y = 28, rule = R10,C0,M1,S154..256,B133..269,NM
12b3o$11b6o$10bob3o$11b5o$11b6o$10b7o$9b9o$9b10o$8b12o$7b14o$5b18o2bo$
bo2b8o3b10obo$11o5b11o$11o6b11o$10o7b11o$11o6b11o$12o4b9obo$bo2b9ob9o$
6b16o$8b12o$9b10o$9b9o$10b8o$11b6o$11b5o$11b5o$11b6o$12b4o!
Turns out the original slow ship rule has a 2c/542o!

Code: Select all

x = 24, y = 25, rule = R10,C0,M1,S154..262,B133..265,NM
10b6o$11b7o$6bo2b10o$5bob12o$4bob14o$3b18o$2b18o$b10o3b7o$9o6b7o$8o8b
6obo$7o10b7o$7o10b7o$7o10b7o$7o10b7o$ob6o9b7o$2b6o8b8o$3b6o6b9o$3b8o2b
10o$4b18o$3b16obo$4b14obo$5b11o2bo$6b9o$7b5o3bo$9b4o!

Code: Select all

o3b2ob2obo3b2o2b2o$bo3b2obob3o3bo2bo$2bo2b3o5b3ob4o$3o3bo2bo2b3o3b3o$
4bo4bobo4bo$2o2b2o2b4obo2bo3bo$2ob4o3bo2bo2bo2bo$b2o3bobob2o$3bobobo5b
obobobo$3bobobob2o3bo2bobo!
(Check gen 3)
Add your computer to the Table of Lifeenthusiast Computers!

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

Re: "Solid" LTL Ships

Post by AforAmpere » December 13th, 2017, 6:18 pm

Could you make a version of this that repeats and writes to a file somewhere?
Wildmyron and I 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

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

Re: "Solid" LTL Ships

Post by Saka » December 13th, 2017, 10:44 pm

AforAmpere wrote:Could you make a version of this that repeats and writes to a file somewhere?
I add 2 lines of comments to each file stating the ship of the speed and who found it and I dont know how to do that with a script. Would be cool tho!

I add them because the file names are R(range)-(period)o/d (slope listed before period if oblique)

I dont know why I settled on that but it would be a pain to change all the names.

Code: Select all

o3b2ob2obo3b2o2b2o$bo3b2obob3o3bo2bo$2bo2b3o5b3ob4o$3o3bo2bo2b3o3b3o$
4bo4bobo4bo$2o2b2o2b4obo2bo3bo$2ob4o3bo2bo2bo2bo$b2o3bobob2o$3bobobo5b
obobobo$3bobobob2o3bo2bobo!
(Check gen 3)
Add your computer to the Table of Lifeenthusiast Computers!

muzik
Posts: 3787
Joined: January 28th, 2016, 2:47 pm
Location: Scotland

Re: "Solid" LTL Ships

Post by muzik » February 6th, 2019, 12:49 pm

2c/218 from tweaking one birth condition of the original slow ship rule. Something tells me it's known.

Code: Select all

x = 23, y = 23, rule = R10,C0,M1,S153..262,B133..265,NM
8bo4bo$7bob3o2bo$5b9o2bo$5b11obo$3bob12obo$4b16o$3b17o$b20o$b9o2b9o$ob
7o4b9o$b7o6b9o$b7o6b9o$b7o6b9o$ob7o4b9o$b9o2b9o$b20o$3b17o$4b16o$3bob
12obo$5b11obo$5b9o2bo$7bob3o2bo$8bo4bo!
c/27 diagonal:

Code: Select all

x = 16, y = 16, rule = R7,C0,M1,S81..134,B68..135,NM
3b7o$2bob6o$bob8obo$ob10o$6ob8o$5o4b6o$4o6b6o$5o4b5o$5o4b5o$6ob6obo$2b
10o$3b8o$2bob6o$4b5o$4b3o2bo$6bo!
Weird suicidal thing in that rule:

Code: Select all

x = 18, y = 18, rule = R7,C0,M1,S81..134,B68..135,NM
7b4o$8b2o$7b4obo$4bob8o$3b10obo$2b12o$3b5o2b5o$ob5o4b5obo$6o6b6o$6o6b
6o$ob5o4b5obo$3b5o2b6o$4b11obo$4b9o$5b8o$6b5o$5b2ob2o$7b4o!
c/32 from another slowship rule tweak:

Code: Select all

x = 23, y = 22, rule = R10,C0,M1,S154..261,B133..265,NM
7bo2b2o2b2o$5b2ob7obo$4b15o$3b16o$2b18o$2b19o$b19obo$ob7o5b7o$8o7b6obo
$b6o8b8o$b6o9b7o$b6o9b7o$b6o8b8o$8o7b6obo$ob7o5b7o$b19obo$2b19o$2b18o$
3b16o$4b15o$5b2ob7obo$7bo2b2o2b2o!
Bored of using the Moore neighbourhood for everything? Introducing the Range-2 von Neumann isotropic non-totalistic rulespace!

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

Re: "Solid" LTL Ships

Post by 77topaz » February 6th, 2019, 4:37 pm

muzik wrote:2c/218 from tweaking one birth condition of the original slow ship rule. Something tells me it's known.

Code: Select all

x = 23, y = 23, rule = R10,C0,M1,S153..262,B133..265,NM
8bo4bo$7bob3o2bo$5b9o2bo$5b11obo$3bob12obo$4b16o$3b17o$b20o$b9o2b9o$ob
7o4b9o$b7o6b9o$b7o6b9o$b7o6b9o$ob7o4b9o$b9o2b9o$b20o$3b17o$4b16o$3bob
12obo$5b11obo$5b9o2bo$7bob3o2bo$8bo4bo!
I like how this ship, twice per cycle, briefly grows then shrinks again - it's a closer fit for the term "pulsar" than the CGoL pattern is. :lol:

muzik
Posts: 3787
Joined: January 28th, 2016, 2:47 pm
Location: Scotland

Re: "Solid" LTL Ships

Post by muzik » August 17th, 2019, 7:04 pm

Solid RRO, although of loopability 1:

Code: Select all

x = 16, y = 16, rule = R7,C0,M1,S81..134,B68..135,NM
obbboobooobbbobb$
bbbbbobobobbbobo$
obobbbbooooooooo$
oboboobooooobbbb$
oobooobbobobbobb$
bboboboboboobobo$
ooooooboooobooob$
booooooobbobobbo$
boboobbobobbbobb$
oobooobobboooboo$
bboooboboooooooo$
obbobooobbbbbboo$
oobboobbbobobboo$
oobbbbbbbobobooo$
oobbobbbobobbobo$
oboboooooboobbbo!
And my current world record slowest solid ship, and indeed the slowest ship in any 2-state rule curerntly known barring adjustables, at 4c/273954:

Code: Select all

x = 100, y = 100, rule = R45,C0,M1,S2885..4923,B2500..4973,NM
40b20o$36b9o10b9o$34b7o5b8o5b7o$32b6o6b12o6b6o$30b6o6b16o6b6o$28b6o5b
22o5b6o$27b5o5b26o5b5o$25b6o3b32o3b6o$24b5o4b34o4b5o$22b6o3b38o3b6o$
21b6o2b42o2b6o$20b6o2b44o2b6o$19b6o2b46o2b6o$18b6ob50ob6o$16b7ob52ob7o
$15b7ob54ob7o$15b6ob56ob6o$14b6ob58ob6o$13b6ob60ob6o$12b6ob62ob6o$11b
6ob64ob6o$10b6ob66ob6o$9b6ob68ob6o$9b82o$8b84o$7b5ob74ob5o$7b4ob76ob4o
$6b4ob78ob4o$5b90o$5b43o4b43o$4b4ob34o14b34ob4o$4b37o18b37o$3b37o20b
37o$3b3ob32o22b32ob3o$3b34o26b34o$2b4ob29o28b29ob4o$2b33o30b33o$2b32o
32b32o$b33o32b33o$b32o34b32o$b31o36b31o$b31o36b31o$31o38b31o$31o38b31o
$31o38b31o$30o40b30o$30o40b30o$30o40b30o$30o40b30o$31o38b31o$31o38b31o
$31o38b31o$31o38b31o$3ob27o38b27ob3o$3ob28o36b28ob3o$b3ob27o36b27ob3o$
b3ob27o36b27ob3o$b2o3b27o34b27o3b2o$b3o2b28o32b28o2b3o$b3o3b27o32b27o
3b3o$2b2o3b28o30b28o3b2o$2b3o2b29o28b29o2b3o$2b3o3b29o26b29o3b3o$3b3o
2b30o24b30o2b3o$3b3o3b30o22b30o3b3o$4b3o2b32o18b32o2b3o$4b3o3b32o16b
32o3b3o$5b3o2b34o12b34o2b3o$5b3o3b78o3b3o$6b3o3b76o3b3o$6b4o2b76o2b4o$
7b4o2b74o2b4o$7b4o3b72o3b4o$8b4o2b72o2b4o$9b4o2b70o2b4o$9b5o2b68o2b5o$
10b5o2b66o2b5o$11b6ob64ob6o$12b6ob62ob6o$13b6ob60ob6o$13b7ob58ob7o$14b
7ob56ob7o$15b7ob54ob7o$16b7ob52ob7o$17b7ob50ob7o$18b7ob48ob7o$19b7ob
46ob7o$20b8ob42ob8o$22b7ob40ob7o$23b8ob36ob8o$24b8o2b32o2b8o$26b8o2b
28o2b8o$27b9o2b24o2b9o$29b10o2b18o2b10o$31b10o2b14o2b10o$33b34o$35b30o
$38b24o$41b18o$48b4o!
Bored of using the Moore neighbourhood for everything? Introducing the Range-2 von Neumann isotropic non-totalistic rulespace!

User avatar
Gustone
Posts: 614
Joined: March 6th, 2019, 2:26 am

Re: "Solid" LTL Ships

Post by Gustone » August 18th, 2019, 4:06 am

muzik wrote:Solid RRO, although of loopability 1:

Code: Select all

x = 16, y = 16, rule = R7,C0,M1,S81..134,B68..135,NM
obbboobooobbbobb$
bbbbbobobobbbobo$
obobbbbooooooooo$
oboboobooooobbbb$
oobooobbobobbobb$
bboboboboboobobo$
ooooooboooobooob$
booooooobbobobbo$
boboobbobobbbobb$
oobooobobboooboo$
bboooboboooooooo$
obbobooobbbbbboo$
oobboobbbobobboo$
oobbbbbbbobobooo$
oobbobbbobobbobo$
oboboooooboobbbo!
It dies
My favourite oscillator of all time

Code: Select all

x = 15, y = 13, rule = B3/S23
7bo2$3b2o5b2o$b2o4bo4b2o$5b2ob2o$bobo7bobo$bo2bobobobo2bo$5obobob5o$o
4bo3bo4bo$b3obobobob3o$3bob2obo2bo$8bobo$8b2o!

User avatar
jimmyChen2013
Posts: 135
Joined: December 11th, 2017, 3:28 am

Re: "Solid" LTL Ships

Post by jimmyChen2013 » August 18th, 2019, 5:18 am

Gustone wrote:
muzik wrote:Solid RRO, although of loopability 1:

Code: Select all

x = 16, y = 16, rule = R7,C0,M1,S81..134,B68..135,NM
obbboobooobbbobb$
bbbbbobobobbbobo$
obobbbbooooooooo$
oboboobooooobbbb$
oobooobbobobbobb$
bboboboboboobobo$
ooooooboooobooob$
booooooobbobobbo$
boboobbobobbbobb$
oobooobobboooboo$
bboooboboooooooo$
obbobooobbbbbboo$
oobboobbbobobboo$
oobbbbbbbobobooo$
oobbobbbobobbobo$
oboboooooboobbbo!
It dies
It doesn't? I ran oscar.py and it saids that it loops with a period of 2536
Failed Replicator!

Code: Select all

x = 4, y = 4, rule = B34ce5cen67c8/S2-i3-jqry4cent5j67c8
bo$obo$bobo$2bo!
(That I wish was not failed D:)

muzik
Posts: 3787
Joined: January 28th, 2016, 2:47 pm
Location: Scotland

Re: "Solid" LTL Ships

Post by muzik » August 18th, 2019, 8:05 am

Bored of using the Moore neighbourhood for everything? Introducing the Range-2 von Neumann isotropic non-totalistic rulespace!

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

Re: "Solid" LTL Ships

Post by Saka » August 18th, 2019, 9:02 am

I can confirm that it indeed is an oscillator and does not die.
Anyway, to post something relevant,
3c/315o

Code: Select all

x = 41, y = 42, rule = R17,C0,M1,S441..730,B370..735,NM
19b3o$16b8o$14b3o7b2o$13bo$16b7o$13b2ob9obo$11b2o2b11o2bo$10b2o2b13o2b
2o$9bo3b15o3bo$8bo3b17o$7bo3b19o$6bo3b21o2b2o$6bo2b23o2bo$5bo2b25o2bo$
2bo4b27obo$bo2bob12o4b13obobo$bo3b12o7b13o2bo$2o2b12o9b11o3bo$2o2b11o
10b12o2bo$2ob11o12b11o2b2o$o2b11o12b12ob2o$o2b11o12b12ob2o$2ob11o12b
11o2b2o$2o2b11o10b12o2bo$2o2b12o9b11o3bo$bo3b12o7b13o2bo$bo2bob12o4b
13obobo$2bo4b27obo$5bo2b25o2bo$6bo2b23o2bo$6bo3b21o2b2o$7bo3b19o$8bo3b
17o$9bo3b15o3bo$10b2o2b13o2b2o$11b2o2b11o2bo$13b2ob9obo$16b7o$13bo$14b
3o7b2o$16b8o$19b3o!
Also, over on discord, muzik wished for symmetry options, so I'll grant him that wish, expect something in a few weeks or something, idk.
EDIT:
6c/4442d

Code: Select all

x = 66, y = 66, rule = R27,C0,M1,S1089..1803,B914..1815,NM
30b6o$27b12o$25b16o$24b5o9b4o$23b2o17bo$22bo8b4o$27b11o$24b2ob12o$21b
3o2b14o$20b2o2b17o4bo$18b3o2b20o4bo$17b2o3b22o4bo$16b2o3b24o4bo$15b2o
3b26o4bo$14b2o4b27o4bo$13bo5b29o4bo$12b2o4b31o4b2o$12bo4b33o4bo$11bo4b
35o3b2o$10bo4b37o3b2o$14b39o3bo$13b41o3bo2bo$5bo6b20o2b21o2bo3bo$4bo6b
19o6b20o2bo2b2o$3b2o5b19o9b19obo2b2o$3b2o4b19o11b19o4b2o$2b2o4b18o14b
20o2b3o$2b2o3b19o15b19o2b3o$b3o3b18o17b18o2b3o$b3o2b18o18b18o3b3o$b3o
2b17o20b18o2b3o$4o2b17o20b18o2b3o$4ob18o21b17o2b3o$4ob18o21b17o2b3o$4o
b18o20b18o2b3o$b3o2b18o19b17o3b3o$b3o2b18o18b18o3b2o$b3o3b18o16b19o2b
3o$2b2o3b19o14b18o4b2o$2b3o3b19o12b19o4b2o$2b3o4b19o10b19o5bo$3b2o5b
19o8b19o5b2o$4b2o2bo2b20o5b19o6bo$5bo3bo2b42o$6bo2bo3b40o$10bo3b38o4bo
$10b2o3b36o4bo$11b2o3b34o4bo$12bo4b32o4b2o$13bo4b30o4b2o$14bo4b28o5bo$
15bo4b26o4b2o$16bo4b25o3b2o$17bo4b23o3b2o$18bo4b21o3b2o$20bo3b19o3b2o$
25b17o2b2o$26b15o2bo$28b12o$29b8o8bo$22b2o7b4o8b2o$23b4o12b5o$25b17o$
26b15o$28b11o$31b5o!
EDIT:
2c/5830d

Code: Select all

x = 84, y = 84, rule = R35,C0,M1,S1815..3005,B1523..3025,NM
36b10o$34b14o$32b18o$30b22o$29b8o14b2o$28b5o$27b3o9b2o$26bo5b15o$30b
17o$28b21o$26b5ob18o$24b5o2b21o$23b4o3b23o$22b4o3b25o7bo$21b3o4b27o7bo
$20b3o4b29o7bo$20bo5b31o$19bo5b33o$18bo6b34o7bo$17bo6b36o7bo$16bo6b39o
5b2o$15bo6b41o5b3o$14bo6b43o5b3o$13bo6b45o4b3o$19b47o4b3o$18b49o4b3o$
17b51o4b2o2bo$16b53o3b3o2bo$15b55o3b2o2b2o$14b25o6b26o2b3o2b2o$5bo8b
24o9b25o2b2o2b3o$13b23o12b25ob3ob3o$4bo7b23o14b28o2b3o$3b2o6b23o16b27o
2b3o$3b2o5b23o18b26o2b4o$2b3o5b22o20b25o2b4o$2b2o5b22o22b24o3b4o$b3o4b
23o23b24o2b4o$b3o4b22o24b24o2b4o$b3o3b23o25b23o2b4o$4o3b22o26b23o2b4o$
4o3b22o26b22o3b4o$4o3b22o26b22o3b4o$4o3b22o26b22o3b4o$4o3b23o25b22o3b
4o$5o2b23o24b23o3b3o$b4o2b24o23b23o3b3o$b4o2b25o21b22o5b2o$b4o2b26o19b
22o6b2o$2b4o2b25o18b23o6bo$2b4o2b26o16b23o7bo$3b3o2b28o13b23o7bo$3b3o
2b3ob25o11b23o$4b3o2b2ob26o8b24o$5b2o2b3ob27o4b26o$5b2o3b2o2b55o$6b2o
2b3o3b52o$7bo3b3o3b50o$11b3o4b48o$12b3o4b46o6bo$13b2o5b44o6bo$13b3o5b
42o6bo$14b3o5b40o6bo$16b2o5b38o6bo$17bo6b36o6bo$18bo6b34o6bo$19bo6b33o
5bo$20bo7b30o5bo$21bo7b28o4b3o$22b2o6b26o4b3o$24bo6b24o3b4o$25bo6b22o
3b4o$33b20o2b5o$35b17ob5o$36b20o$37b17o$40b10o6b2o$54b3o$50b6o$32b4o
10b9o$33b21o$35b17o$37b13o$40b7o!
looks weird at 10^2 step in golly.

Code: Select all

o3b2ob2obo3b2o2b2o$bo3b2obob3o3bo2bo$2bo2b3o5b3ob4o$3o3bo2bo2b3o3b3o$
4bo4bobo4bo$2o2b2o2b4obo2bo3bo$2ob4o3bo2bo2bo2bo$b2o3bobob2o$3bobobo5b
obobobo$3bobobob2o3bo2bobo!
(Check gen 3)
Add your computer to the Table of Lifeenthusiast Computers!

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

Re: "Solid" LTL Ships

Post by Saka » April 12th, 2020, 9:42 am

Sorry for a bit of a necropost, but I added a "D2" symmetry option that mirrors the selection.

Code: Select all

# Solid.py
# Makes soups and runs oscar until a ship is found
# Seemingly stupid but actually very useful and fast
# Mainly used for searching "Solid" ships in LTL since soups of the right size
# produce only 1 object and separation is not needed so oscar can be run.
# Best fit for solid LTL rules that have lower period oscs that stabilize quicker but can also be used for larger ranges.
# Beeps when a ship is found.
# By Saka with oscar.py code from Andrew Trevorrow.

import golly as g
from glife import rect, pattern
from time import time

if len(g.getselrect()) == 0:
    g.exit("No selection!")
else:
    selection = g.getselrect()
    
g.new("Solid")
g.select(selection)
g.fitsel()
result = "Soup"
symmetry = g.getstring("Symmetry (Select half of the soup size you want): C1, D2","C1")
#maxGen = int(g.getstring("Maximum gens (To avoid expanding soups)")) # Maximum gens and population to avoid expanding soups
maxPop = 300 #(selection[2]*selection[3])*10 #This is much, much better
n = -1

while result != "S": #Old and not used anymore but whatever.
    #g.setgen('0')
    n += 1
    if n % 100==0:
        g.show(str(n)+" soups searched")
        g.update()
    g.reset()
    if symmetry == 'D2':
        g.clear(1)
    g.randfill(50)
    if symmetry=='D2':
        g.putcells(g.getcells(selection),selection[0]*2+selection[2]*2-1,0,-1,0,0,1)
    # The entire code of oscar.py :)
    # Oscar is an OSCillation AnalyzeR for use with Golly.
    # Author: Andrew Trevorrow (andrew@trevorrow.com), March 2006.

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

    # initialize lists
    hashlist = []        # for pattern hash values
    genlist = []         # corresponding generation counts
    poplist = []         # corresponding population counts
    boxlist = []         # corresponding bounding boxes

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

    def show_spaceship_speed(period, deltax, deltay):
        # we found a moving oscillator
        if (deltax == deltay) or (deltax == 0) or (deltay == 0):
            speed = ""
            if (deltax == 0) or (deltay == 0):
                # orthogonal spaceship
                if (deltax > 1) or (deltay > 1):
                    speed += str(deltax + deltay)
            else:
                # diagonal spaceship (deltax == deltay)
                if deltax > 1:
                    speed += str(deltax)
            if period == 1:
                g.show("S")
                g.exit("Found ship with speed " + speed + "c"+" after "+str(n)+" soups.")
            else:
                g.show("S")
                g.exit("Found ship with speed " + speed + "c/" +str(period)+" after "+str(n)+" soups.")
        else:
            # deltax != deltay and both > 0
            speed = str(deltay) + "," + str(deltax)
            if period == 1:
                g.show("S")
                g.exit("Found knightship with speed " + speed + "c"+" after "+str(n)+" soups.")
            else:
                g.show("S")
                g.exit("Found knightship with speed " + speed + "c/" + str(period)+" after "+str(n)+" soups.")

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

    def oscillating():
        # return True if the pattern is empty, stable or oscillating

        # first get current pattern's bounding box
        prect = g.getrect()
        pbox = rect(prect)
        if pbox.empty:
            #g.show("The pattern is empty.")
            return True

        # get current pattern and create hash of "normalized" version -- ie. shift
        # its top left corner to 0,0 -- so we can detect spaceships and knightships

        h = g.hash(prect)

        # check if outer-totalistic rule has B0 but not S8
        rule = g.getrule().split(":")[0]
        hasB0notS8 = rule.startswith("B0") and (rule.find("/") > 1) and not rule.endswith("8")

        # determine where to insert h into hashlist
        pos = 0
        listlen = len(hashlist)
        while pos < listlen:
            if h > hashlist[pos]:
                pos += 1
            elif h < hashlist[pos]:
                # shorten lists and append info below
                del hashlist[pos : listlen]
                del genlist[pos : listlen]
                del poplist[pos : listlen]
                del boxlist[pos : listlen]
                break
            else:
                # h == hashlist[pos] so pattern is probably oscillating, but just in
                # case this is a hash collision we also compare pop count and box size
                if (int(g.getpop()) == poplist[pos]) and \
                   (pbox.wd == boxlist[pos].wd) and \
                   (pbox.ht == boxlist[pos].ht):
                    period = int(g.getgen()) - genlist[pos]

                    if hasB0notS8 and (period % 2 > 0) and (pbox == boxlist[pos]):
                        # ignore this hash value because B0-and-not-S8 rules are
                        # emulated by using different rules for odd and even gens,
                        # so it's possible to have identical patterns at gen G and
                        # gen G+p if p is odd
                        return False

                    if pbox == boxlist[pos]:
                        # pattern hasn't moved
                        if period == 1:
                            pass
                            #g.show("SL")
                        else:
                            pass
                            #g.show("OSC")
                    else:
                        deltax = abs(boxlist[pos].x - pbox.x)
                        deltay = abs(boxlist[pos].y - pbox.y)
                        show_spaceship_speed(period, deltax, deltay)
                    return True
                else:
                    # look at next matching hash value or insert if no more
                    pos += 1

        # store hash/gen/pop/box info at same position in various lists
        hashlist.insert(pos, h)
        genlist.insert(pos, int(g.getgen()))
        poplist.insert(pos, int(g.getpop()))
        boxlist.insert(pos, pbox)

        return False

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

    def fit_if_not_visible():
        # fit pattern in viewport if not empty and not completely visible
        r = rect(g.getrect())
        if (not r.empty) and (not r.visible()): g.fit()

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

    #g.show("Checking for oscillation... (hit escape to abort)")

    oldsecs = time()
    while not oscillating():
        g.run(1)
        newsecs = time()
        #if newsecs - oldsecs >= 1.0:     # show pattern every second
            #oldsecs = newsecs
            #fit_if_not_visible()
            #g.update()
        if int(g.getpop()) > maxPop: #If not: Use int(g.getgen()) > maxGen
            break
The question Im asking now is how much I can optimize it for speed, but I'm not sure how I would, as of now. If anyone has suggestions (or has made a modified faster version), please do tell me.

I hope the new D2 allows for more fruitful roomba-bug searching.

Code: Select all

o3b2ob2obo3b2o2b2o$bo3b2obob3o3bo2bo$2bo2b3o5b3ob4o$3o3bo2bo2b3o3b3o$
4bo4bobo4bo$2o2b2o2b4obo2bo3bo$2ob4o3bo2bo2bo2bo$b2o3bobob2o$3bobobo5b
obobobo$3bobobob2o3bo2bobo!
(Check gen 3)
Add your computer to the Table of Lifeenthusiast Computers!

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

Re: "Solid" LTL Ships

Post by Saka » April 13th, 2020, 1:15 am

Yet another 2c/666d

Code: Select all

x = 25, y = 25, rule = R10,C0,M1,S153..260,B133..265,NM
13b2o$12b3o$11b6o$9b7obo$8b9o$7b10o$6b12o$2bo2b14o$2b18o$21o$10o4b8o$b
9o5b7o$2b7o6b8obo$2b8o5b8obo$3b7o4b9o$3b20o$4b17obo$5b14o2bo$6b12o$7b
10o$8b8o$7b8o$8b6o$8bo2bo$10b2o!
2c/406o

Code: Select all

x = 25, y = 24, rule = R10,C0,M1,S151..261,B134..263,NM
14b2o$8bo2b7o$7bob10o$6b13o$5b15o$3b18o$2b20o$b20obo$b10o3b8o$9o6b8o$
9o7b7o$ob6o8b7o$ob6o8b7obo$2b7o7b8o$2b8o5b9o$bob8o3b10o$3b20o$4b18o$5b
16o$6b13o$6b12o$6b11o$7b7o$9b5o!
c/122d

Code: Select all

x = 24, y = 24, rule = R10,C0,M1,S148..253,B133..261,NM
11b4o$9bob6o$7bob9o$6b13o$5b15o$4b17o$3b19o$2b9o3b7o$b8o6b7o$b7o8b6o$
8o9b7o$7o10b7o$7o10b7o$7o10b7o$b7o8b8o$b8o7b8o$3b7o4b9o$2bob18o$3b18o$
4b16o$5b14o$6b10obo$7b10o$8b7o!
c/21o

Code: Select all

x = 31, y = 31, rule = R16,C0,M1,S373..614,B329..637,NM
13bo3bo$10b2o7b2o$9b2o2b5o2b2o$7b2ob11ob2o$6b2ob16o$5b21o$4b23o$3b25o$
3bob23o$2bob23obo$2b28o$bob25obo$3b25o$ob27obo$2b27o$2b27o$2b27o$ob27o
bo$3b25o$bob25obo$2b28o$2bob23obo$3bob23o$3b25o$4b23o$5b21o$6b2ob16o$
7b2ob11ob2o$9b2o2b5o2b2o$10b2o7b2o$13bo3bo!
c/33o

Code: Select all

x = 47, y = 48, rule = R21,C0,M1,S634..1041,B557..1083,NM
21b5o$18b11o$16b15o$15b2o3b7o3b2o$14bo3b11o3bo$17b13o$15b16o$13b19o$
12b21obo$12b24o$11b25o$10b27o$8b31o$7b32o$4bo2b33o2bo$3bo2b15o5b15o2bo
$2bo3b13o8b14o2b2o$2bo2b13o11b13o2bo$b2ob13o13b13ob2o$b2ob12o14b13ob2o
$2ob13o15b16o$2ob12o17b12ob2o$15o17b15o$14o19b14o$14o19b14o$15o17b15o$
2ob12o17b12ob2o$2ob13o15b16o$b2ob12o14b13ob2o$b2ob13o13b13ob2o$2bo2b
13o11b13o2bo$2bo3b13o8b14o2b2o$3bo2b15o5b15o2bo$4bo2b33o2bo$7b32o$8b
31o$10b27o$11b25o$12b24o$12b21obo$13b19o$15b16o$17b13o$14bo3b11o3bo$
15b2o3b7o3b2o$16b15o$18b11o$21b5o!
Bumpy c/36o roomba bug (Technically roomba bugs are a subset of solid ships, so I guess this fits)

Code: Select all

x = 21, y = 21, rule = R10,C0,M1,S144..224,B131..266,NM
8b6o$6bob5obo$6b9o$5b11o$4b13o$3b15o$b7o5b7o$2b5o7b5obo$6o2b5o2b6o$6o
2b5o2b6o$6o2b5o2b6o$6o2b5o2b6o$6o2b5o2b6o$2b5o7b5obo$b7o5b7o$3b15o$4b
13o$5b11o$6b9o$6bob5obo$8b6o!

Code: Select all

o3b2ob2obo3b2o2b2o$bo3b2obob3o3bo2bo$2bo2b3o5b3ob4o$3o3bo2bo2b3o3b3o$
4bo4bobo4bo$2o2b2o2b4obo2bo3bo$2ob4o3bo2bo2bo2bo$b2o3bobob2o$3bobobo5b
obobobo$3bobobob2o3bo2bobo!
(Check gen 3)
Add your computer to the Table of Lifeenthusiast Computers!

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

Re: "Solid" LTL Ships

Post by Saka » April 14th, 2020, 10:38 pm

c/23o in a range 5 rule

Code: Select all

x = 12, y = 12, rule = R5,C0,M1,S44..72,B37..73,NM
4bob2o$2bob6o$b10o$10o$b4o2b5o$4o4b3o$4o4b3o$b4o2b5o$10o$b10o$2bob6o$
4bob2o!
This other range 7 (and apgsearchable!) rule has 4 known solid ships, I think that's the most in one rule so far

Code: Select all

x = 67, y = 120, rule = R7,C0,M1,S82..134,B68..136,NM
56bob2o2bo$57b5o$56b7o$53bob9obo$20bob3obobo3bo21b11o$19bo4bobobo3bo
20b12o$12b3o3bo5bob3ob3o20b13o$12bo4bo6bo3bobobo20b13o$12b3obo7bo3bob
3o20b12o$54b10obo$55b8o$56b6o$57b4obo28$57b4o$56b6o$55b8obo$obo9bob3ob
3ob3ob3o25b10o$obo8bo4bobo3bobo3bo24b12o$3ob3o3bo3b3ob3ob3ob3ob3o20b
12o$2bobo4bo4bo3bobobobobo3bobo20b12o$2bob3obo5b3ob3ob3ob3ob3o20b12o$
54b10o$55b8o$56b6o$57b4o$57b4o21$57b4o$56b7o$56b7o$55b10o$53b12o$18bob
ob3ob3o24b13o$17bo2bo3bo3bo24b13o$10b3o3bo3bob3ob3ob3o20b13o$10bo4bo4b
o3bo3bobobo20b12o$10b3obo5bob3ob3ob3o22b10o$56b7o$56b7o$57b4o21$57bo$
56bob4obo$55b11o$54b12o$20bob3obobo24bob12o$19bo4bobobo25b12o$12b3o3bo
3b3ob3ob3o21b12o$12bo4bo4bo5bobobo21b12o$12b3obo5b3o3bob3o21b12o$53bob
12o$54b12o$55b11o$56bob4obo$57bo!
Some in Range 6
c/41o

Code: Select all

x = 14, y = 14, rule = R6,C0,M1,S62..106,B53..106,NM
5b5o$4b5o$4b7o$bob9o$2b11o$6o3b5o$b4o4b5o$b4o4b5o$6o3b5o$2b11o$bob9o$
4b7o$4b5o$5b5o!
2c/28o

Code: Select all

x = 14, y = 14, rule = R6,C0,M1,S61..105,B53..106,NM
6b3o$5b6o$4b7o$3b9o$b11o$6o3b5o$b5o3b4o$b5o3b4o$6o3b5o$b11o$3b9o$4b7o$
5b6o$6b3o!

Code: Select all

o3b2ob2obo3b2o2b2o$bo3b2obob3o3bo2bo$2bo2b3o5b3ob4o$3o3bo2bo2b3o3b3o$
4bo4bobo4bo$2o2b2o2b4obo2bo3bo$2ob4o3bo2bo2bo2bo$b2o3bobob2o$3bobobo5b
obobobo$3bobobob2o3bo2bobo!
(Check gen 3)
Add your computer to the Table of Lifeenthusiast Computers!

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

Re: "Solid" LTL Ships

Post by Saka » May 20th, 2020, 2:23 am

c/13o in an R10 rule that is not the original slowship rule

Code: Select all

x = 21, y = 20, rule = R10,C0,M1,S140..238,B128..237,NM
8b7o$5b11o$4b13o$3bob13o$2bob16o$bob16o$2b19o$b8o4b8o$b7o6b7o$7o7b7o$
7o7b7o$b7o6b7o$b8o4b8o$2b19o$bob16o$2bob16o$3bob13o$4b13o$5b11o$8b7o!
4c/206o and c/147o, courtesy of AforAmpere

Code: Select all

x = 45, y = 119, rule = R20,C0,M1,S534..907,B491..903,NM
21b3o$26bo$21b3o$15bo2b8o2bo$14bo2b11obo$13bob14ob2o$12bob16o2bo$11bob
18o$12b20o$12b21o$11b23o$7bo2b25o$6bob28o2bo$5bob30o2bo$4bob32o$3bob
16o3b15obo$5b14o7b14obo$4b14o9b14o$3b14o11b13o$3b13o13b13o$2b14o13b13o
$ob13o15b13o$ob13o15b13obo$ob13o15b13o$2b14o13b13o$3b13o13b13o$3b14o
11b13o$4b14o9b14o$5b14o7b14obo$3bob16o3b15obo$4bob32o$5bob30o2bo$6bob
28o2bo$7bo2b25o$11b23o$12b21o$12b20o$11bob18o$12bob16o2bo$13bob14ob2o$
14bo2b11obo$15bo2b8o2bo$21b3o$26bo$21b3o35$19b7o$16b4o5b3o$14b15o$14b
17o$13b18obo$10bob20obo$9bob22obo$8bob24obo$7bob26obo$8b28obo$7b30obo$
6b33o$5b34o$4b36o$3b38o$3b16o6b16o$3b15o8b16o$2b16o9b13obo$2bob13o10b
15o$2bob13o10b15o$2bob13o10b15o$2bob13o10b15o$2b16o9b13obo$3b15o8b16o$
3b16o6b16o$3b38o$4b36o$5b34o$6b33o$7b30obo$8b28obo$7bob26obo$8bob24obo
$9bob22obo$10bob20obo$13b18obo$14b17o$14b15o$16b4o5b3o$19b7o!

Code: Select all

o3b2ob2obo3b2o2b2o$bo3b2obob3o3bo2bo$2bo2b3o5b3ob4o$3o3bo2bo2b3o3b3o$
4bo4bobo4bo$2o2b2o2b4obo2bo3bo$2ob4o3bo2bo2bo2bo$b2o3bobob2o$3bobobo5b
obobobo$3bobobob2o3bo2bobo!
(Check gen 3)
Add your computer to the Table of Lifeenthusiast Computers!

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

Re: "Solid" LTL Ships

Post by Saka » May 31st, 2020, 4:04 am

c/13o and c/72o from apgsearch

Code: Select all

x = 54, y = 49, rule = R7,C0,M1,S81..133,B68..134,NM
45b3o$44bob2ob2o$42b9o$42b10o$41b12o$8bobob3o25b14o$7bo2bo3bo26b12o$3o
3bo3bob3ob3o22b12o$o4bo4bo3bobobo22b12o$3obo5bob3ob3o21b14o$41b12o$42b
10o$42b9o$44bob2ob2o$45b3o21$47bo$42bob6o$41b10o$40b11o$8bob3ob3o24b
11o$7bo4bo3bo23b13o$3o3bo5bob3ob3o19b12o$o4bo6bobo3bobo19b12o$3obo7bob
3ob3o19b13o$41b11o$40b11o$41b10o$42bob6o$47bo!
c/25d, c/54d, c/34o also from apgsearch

Code: Select all

x = 54, y = 73, rule = R7,C0,M1,S81..132,B68..136,NM
43b5o$43b2obo$42b7o$41b9o$40b10obo$8bob3ob3o3bo18b13o$7bo4bobo5bo18b
11obo$3o3bo3b3ob3ob3o18b13o$o4bo4bo5bobobo18b13o$3obo5b3ob3ob3o19b10o$
41b8o$42b6o$43b4o18$43bo$44b4o$43b7o$40bob8o$41b12o$8bob3obobo3bo19b
12o$7bo2bo3bobo3bo19b13o$3o3bo3b3ob3ob3o19b13o$o4bo6bo3bobobo19b13o$3o
bo5b3o3bob3o20b12o$41b12o$42b9obo$43b7obo$45b3o17$45b4obo$44b8o$43b10o
$42b10obo$40b13o$8bob3obobo23b14o$7bo4bobobo23bob12o$3o3bo3b3ob3ob3o
19b14o$o4bo6bo3bobobo19b13o$3obo5b3o3bob3o21b10obo$43b10o$44b8o$45b4ob
o!

Code: Select all

o3b2ob2obo3b2o2b2o$bo3b2obob3o3bo2bo$2bo2b3o5b3ob4o$3o3bo2bo2b3o3b3o$
4bo4bobo4bo$2o2b2o2b4obo2bo3bo$2ob4o3bo2bo2bo2bo$b2o3bobob2o$3bobobo5b
obobobo$3bobobob2o3bo2bobo!
(Check gen 3)
Add your computer to the Table of Lifeenthusiast Computers!

Post Reply