Spaceship Discussion Thread

For discussion of specific patterns or specific families of patterns, both newly-discovered and well-known.
User avatar
dvgrn
Moderator
Posts: 10687
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: Spaceship Discussion Thread

Post by dvgrn » October 7th, 2020, 4:09 pm

MathAndCode wrote:
October 7th, 2020, 3:23 pm
Also, the computational power required for any method that is cleverer than a brute force method should be bounded by the computational power for the brute force method, which is linear as a function of period.
Here again, in theory you're absolutely right. But in practice you aren't actually suggesting anything that's even vaguely practical.

Brute-force enumeration searches are linear as a function of period, for a given search size. But a "linear" search isn't any use if you can't complete it. Even at tiny sizes like 10x10, you won't even be able to make a decent start before Homo sapiens evolves into something else -- hopefully something with better search technology.

The various shortcuts that people have come up with so far -- lifesrc/WLS/JLS style recursively trying options for each cell in some specific sort order, and pruning where possible, and the various spaceship-specific searchers that enumerate workable options for spaceships row by row -- all use algorithms that sacrifice the linearity of the brute-force solution, in favor of actually being able to find something every now and then.

The fact that you can trim some branches of these searches is what makes it possible to find things. But you can't trim all the branches, and the search tree that is left is at least mildly exponential as a function of period.

wwei23

Re: Spaceship Discussion Thread

Post by wwei23 » October 7th, 2020, 4:09 pm

calcyman wrote:
October 7th, 2020, 4:07 pm
Yes, eight hours after feeding Tom Rokicki's partial as input to the original ikpx.
Did you try the "almost knightship" from 2004 or so too?

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

Re: Spaceship Discussion Thread

Post by calcyman » October 7th, 2020, 4:56 pm

wwei23 wrote:
October 7th, 2020, 4:09 pm
calcyman wrote:
October 7th, 2020, 4:07 pm
Yes, eight hours after feeding Tom Rokicki's partial as input to the original ikpx.
Did you try the "almost knightship" from 2004 or so too?
I did, yes, but it didn't find anything despite many days of searching.

I guess I could try some fresh (2,1)c/6 searches now with ikpx2, but I'm more interested in (2,1)c/7 since we don't have any examples yet and it's the only missing 'spaceship type' of period <= 7.
What do you do with ill crystallographers? Take them to the mono-clinic!

HartmutHolzwart
Posts: 841
Joined: June 27th, 2009, 10:58 am
Location: Germany

Re: Spaceship Discussion Thread

Post by HartmutHolzwart » October 7th, 2020, 4:58 pm

dvgrn wrote:
October 7th, 2020, 4:09 pm
MathAndCode wrote:
October 7th, 2020, 3:23 pm
Also, the computational power required for any method that is cleverer than a brute force method should be bounded by the computational power for the brute force method, which is linear as a function of period.
Here again, in theory you're absolutely right. But in practice you aren't actually suggesting anything that's even vaguely practical.

Brute-force enumeration searches are linear as a function of period, for a given search size. But a "linear" search isn't any use if you can't complete it. Even at tiny sizes like 10x10, you won't even be able to make a decent start before Homo sapiens evolves into something else -- hopefully something with better search technology.

The various shortcuts that people have come up with so far -- lifesrc/WLS/JLS style recursively trying options for each cell in some specific sort order, and pruning where possible, and the various spaceship-specific searchers that enumerate workable options for spaceships row by row -- all use algorithms that sacrifice the linearity of the brute-force solution, in favor of actually being able to find something every now and then.

The fact that you can trim some branches of these searches is what makes it possible to find things. But you can't trim all the branches, and the search tree that is left is at least mildly exponential as a function of period.
The fundamental flaw in the reasoning is that the brute force method is linear in the number of generation, but is exponential in the other dimension width and height. The complexity analysis actually must take into account all three dimensions at once to come up with a useful estimate for the overall search time.

The task is not to decide whether there is a spacship / oscillator of given witdh height, but to find one with the dimensions not known upfront.

MathAndCode
Posts: 5143
Joined: August 31st, 2020, 5:58 pm

Re: Spaceship Discussion Thread

Post by MathAndCode » October 7th, 2020, 5:32 pm

calcyman wrote:
October 7th, 2020, 3:50 pm
In its smallest phase, Sir Robin consists of 282 cells in a 31-by-79 box.

Suffice it to say, my search program didn't trawl through all (2449 choose 282) = 1816542579891561316295603424938029274802095354130525469758394163343550228141988777491556527148757232815365841439814075524609380448143349835366086222294538469451778290096666558439353121684851772080924374971250875587196201159927343699373816102263935421483779586294694267983046787036177074919515001221009282754607956760907861537317467526824613979214860525827624782038843939722869568 different ways to populate a 31-by-79 box with 282 live cells and run each of these patterns for 6 generations; this would have taken much longer than eight hours.

Instead, it does something more akin to what Dave and Hartmut have been suggesting: its search space consists of an interleaving of all phases, and it tries to find a solution to the resulting set of Boolean equations using a bunch of heuristics to guide the search.

I'd recommend reading David Eppstein's https://arxiv.org/abs/cs/0004003 article, since many of the ideas in that paper are incorporated into modern spaceship search programs.
Something else that I don't get is using orthogonal bounding boxes for non-orthogonal spaceships. Looking at this knightship partial, one can see that the left edge of the partial is not straight but instead changes directions several times, which is a consequence of trying to fit a knightship partial into an orthogonal bounding box because the partials tend to be aligned in the direction of travel in order to minimize the leading edge (which is the hardest part), but then have to be spliced together jaggedly in order to fit in a smaller bounding box. Sir Robin demonstrates a similar effect.

Code: Select all

x = 30, y = 79, rule = QuadLife
3.2A$2.2A$4.2A.A$2.A3.3A.2A$.6A.2A2.A$2A.2A4.A$A4.A6.A.A$5A4.3A2.A$3A.A4.2A$5.2A2.A.A$.A3.2A3.2A$6.A3.A2.A.A$9.3A2.3A$9.2A.A$11.A.3A.2A$9.A2.A$8.2A.A2.A.A$8.2A2.3A$9.A2.A2.A.A$9.2A.A.2A2.2A$11.A.3A$17.3A$18.2A2$10.2B6.A2.A$10.2B.B4.4A$11.2B3.B4A$11.B3.2B$11.2B4.B$11.B4.2B$9.5B2.B2.B$12.B5.2B$11.2B6.B.3B$12.B4.2B3.2B$15.4B$18.3B$19.B4.B$19.7B$22.B.2B$18.3B3.2B$21.B5.B$18.2B.3B2.B$17.2B3.2B.2B$17.B.B2.B.B.B.B$18.2B.5B3.B$18.2B3.B2.B.B$19.B2.B$20.C$19.3C$18.C$18.C.3C$23.C$17.C6.C$16.2C.C3.C$19.C.2C$20.3C$23.2C$16.4C4.C$17.5C.C.C$17.C6.C$24.C2.C$24.C2.C$22.6C$20.C.2C.C$20.C7.C$20.C4.3C.C$21.C3.C.C$21.2C4.C.C$22.2C.C.2C$23.C.5C$21.C.2C2.C$24.C$21.C4.C2.C$22.C3.2C$26.C$24.2C$23.2C$24.C$24.C!
I think that it will be easier to find knightships if we let them orient themselves how they want to. Sir Robin is unnaturally (for a knightship) vertical.

Code: Select all

x = 226, y = 69, rule = LifeHistory
C4.C.C5.C.5C2.4C2.C4.C.7C2.3C2.C4.C.5C.4C9.3C2.5C3.C3.4C3.4C2.C4.C.5C.C5.C2.4C6.4C3.4C2.C4.C.C5.C.4C3.5C.C5.C2.4C8.C3.4C2.5C3.C4.3C$C3.C2.2C4.C3.C3.C4.C.C4.C4.C4.C3.C.C4.C3.C3.C3.C7.C3.C.C6.C.C2.C3.C.C4.C.C4.C3.C3.2C4.C.C4.C5.C3.C.C4.C.C4.C.2C4.C.C3.C4.C3.2C4.C.C4.C6.C.C2.C3.C.C6.C.C2.C3.C$C2.C3.C.C3.C3.C3.C6.C4.C4.C4.C5.C4.C3.C3.C3.C7.C5.C5.C3.C.C3.C.C6.C4.C3.C3.C.C3.C.C10.C3.C.C4.C.C4.C.C.C3.C.C4.C3.C3.C.C3.C.C10.C3.C.C3.C.C5.C3.C.C$C.C4.C.C3.C3.C3.C6.C4.C4.C4.C5.C4.C3.C3.C3.C7.C5.C5.C3.C.C3.C.C6.C4.C3.C3.C.C3.C.C10.C3.C.C4.C.C4.C.C.C3.C.C4.C3.C3.C.C3.C.C10.C3.C.C3.C.C5.C3.C.C$2C5.C2.C2.C3.C3.C2.3C.6C4.C5.3C2.6C3.C3.4C2.5C2.3C2.5C.5C.4C2.C6.6C3.C3.C2.C2.C.C2.3C5.4C2.C4.C.C4.C.C2.C2.C.C4.C3.C3.C2.C2.C.C2.3C5.5C.4C2.5C.5C2.3C$C.C4.C3.C.C3.C3.C4.C.C4.C4.C8.C.C4.C3.C3.C15.C.C5.C3.C.2C4.C6.C4.C3.C3.C3.C.C.C4.C5.C3.C.C4.C.C4.C.C3.C.C.C4.C3.C3.C3.C.C.C4.C5.C3.C.2C4.C5.C3.C5.C$C2.C3.C3.C.C3.C3.C4.C.C4.C4.C8.C.C4.C3.C3.C15.C.C5.C3.C.C.C3.C6.C4.C3.C3.C3.C.C.C4.C5.C3.C.C4.C.C4.C.C3.C.C.C4.C3.C3.C3.C.C.C4.C5.C3.C.C.C3.C5.C3.C5.C$C3.C2.C4.2C3.C3.C4.C.C4.C4.C4.C3.C.C4.C3.C3.C11.C3.C.C5.C3.C.C2.C2.C4.C.C4.C3.C3.C4.2C.C4.C5.C3.C.C4.C.C4.C.C4.2C.C3.C4.C3.C4.2C.C4.C5.C3.C.C2.C2.C5.C3.C.C3.C$C4.C.C5.C.5C2.4C2.C4.C4.C5.3C2.C4.C.5C.C12.3C2.5C.C3.C.C3.C2.4C2.C4.C.5C.C5.C2.4C6.4C3.4C3.4C2.C5.C.4C3.5C.C5.C2.4C6.C3.C.C3.C.5C.C3.C2.3C7$26.10B2.4D4.D3.4D16.2B12.4D4.D3.4D12.10B7.4E2.E4.E3.E3.E3.E14.B$26.10B2.D3.D2.D.D2.D3.D14.4B11.D3.D2.D.D2.D3.D11.10B6.E4.E.E3.E3.E.E2.E3.E13.3B7.4E2.E4.E3.E3.E3.E$26.10B2.D3.D.D3.D.D4.D12.6B10.D3.D.D3.D.D4.D11.10B5.E4.E.E2.E3.E3.E2.E.E13.4B6.E4.E.E3.E3.E.E2.E3.E$26.10B2.D3.D.D3.D.D4.D11.8B9.D3.D.D3.D.D4.D11.10B5.E4.E.E.E4.E3.E2.E.E12.6B5.E4.E.E2.E3.E3.E2.E.E$26.10B2.4D2.5D.D4.D10.10B8.4D2.5D.D4.D12.10B4.E4.E.2E5.5E3.E12.7B5.E4.E.E.E4.E3.E2.E.E$26.10B2.D3.D.D3.D.D4.D11.10B7.D3.D.D3.D.D4.D12.10B4.E4.E.E.E4.E3.E3.E12.8B4.E4.E.2E5.5E3.E$26.10B2.D3.D.D3.D.D4.D12.10B6.D3.D.D3.D.D4.D13.10B3.E4.E.E2.E3.E3.E3.E13.7B4.E4.E.E.E4.E3.E3.E$26.10B2.D3.D.D3.D.D3.D14.10B5.D3.D.D3.D.D3.D14.10B3.E4.E.E3.E2.E3.E3.E13.8B3.E4.E.E2.E3.E3.E3.E$26.10B2.4D2.D3.D.4D16.10B4.4D2.D3.D.4D16.10B3.4E2.E4.E.E3.E3.E14.7B3.E4.E.E3.E2.E3.E3.E$26.10B35.10B35.10B39.8B3.4E2.E4.E.E3.E3.E$26.10B36.10B35.10B39.7B$26.10B37.10B34.10B39.8B$26.10B38.10B34.10B39.7B$26.10B39.10B33.10B39.8B$26.10B40.10B33.10B39.7B$26.10B41.10B32.10B39.8B$26.10B42.10B32.10B39.7B$26.10B43.10B31.10B39.8B$26.10B44.10B31.10B39.6B$26.10B45.10B30.10B39.5B$26.10B46.8B32.10B39.3B$26.10B47.6B33.10B39.2B$26.10B48.4B35.10B$26.10B49.2B36.10B$26.10B6$25.2B8.4A3.4A3.4A2.4A12.B12.4E3.4E3.4E2.4E7.5E.4E3.5E3.E7.4E2.E4.E.7E6.3E2.E4.E2.4E2.E4.E.E5.4E$23.5B6.A4.A.A4.A.A4.A.A3.A11.2B10.E4.E.E4.E.E4.E.E3.E8.E3.E3.E2.E6.E.E6.E3.E.E4.E4.E8.E3.E.E4.E.E4.E.E4.E.E5.E3.E$21.7B6.A6.A4.A.A4.A.A4.A10.3B9.E6.E4.E.E4.E.E4.E7.E3.E4.E.E5.E3.E5.E3.E.E4.E4.E8.E5.E4.E.E4.E.E4.E.E5.E4.E$19.10B5.A6.A4.A.A4.A.A4.A10.4B8.E6.E4.E.E4.E.E4.E7.E3.E4.E.E5.E3.E5.E3.E.E4.E4.E8.E5.E4.E.E4.E.E4.E.E5.E4.E$17.12B5.A2.3A.A4.A.A4.A.A4.A10.5B7.E2.3E.E4.E.E4.E.E4.E7.E3.E4.E.5E.5E5.4E2.E4.E4.E9.3E2.6E.E4.E.E4.E.E5.E4.E$17.13B4.A4.A.A4.A.A4.A.A4.A10.6B6.E4.E.E4.E.E4.E.E4.E7.E3.E4.E.E5.E3.E5.E3.E.E4.E4.E12.E.E4.E.E4.E.E4.E.E5.E4.E$18.12B4.A4.A.A4.A.A4.A.A4.A10.7B5.E4.E.E4.E.E4.E.E4.E7.E3.E4.E.E5.E3.E5.E3.E.E4.E4.E12.E.E4.E.E4.E.E4.E.E5.E4.E$18.13B3.A4.A.A4.A.A4.A.A3.A11.8B4.E4.E.E4.E.E4.E.E3.E8.E3.E3.E2.E5.E3.E5.E3.E.E4.E4.E8.E3.E.E4.E.E4.E.E4.E.E5.E3.E$19.12B4.4A3.4A3.4A2.4A12.9B4.4E3.4E3.4E2.4E7.5E.4E3.5E.E3.E5.4E3.4E5.E9.3E2.E4.E2.4E3.4E2.5E.4E$19.13B39.10B$20.12B39.11B$20.13B39.10B.E4.E3.E3.E7.E.5E5.4E3.4E2.E4.E.E5.E.4E3.5E.4E8.4E3.4E2.4E2.E5.E.5E.4E3.3E$21.12B40.9B.E4.E2.E.E2.E7.E.E9.E3.E.E4.E.E4.E.2E4.E.E3.E2.E5.E3.E6.E4.E.E4.E.E3.E.2E4.E.E5.E3.E.E3.E$21.13B40.8B.E4.E.E3.E2.E5.E2.E9.E3.E.E4.E.E4.E.E.E3.E.E4.E.E5.E4.E5.E6.E4.E.E3.E.E.E3.E.E5.E3.E.E$22.12B41.7B.E4.E.E3.E2.E5.E2.E9.E3.E.E4.E.E4.E.E.E3.E.E4.E.E5.E4.E5.E6.E4.E.E3.E.E.E3.E.E5.E3.E.E$22.13B41.6B.6E.5E3.E3.E3.5E5.4E2.E4.E.E4.E.E2.E2.E.E4.E.5E.E4.E5.E6.E4.E.4E2.E2.E2.E.5E.4E3.3E$23.12B42.5B.E4.E.E3.E3.E3.E3.E9.2E4.E4.E.E4.E.E3.E.E.E4.E.E5.E4.E5.E6.E4.E.2E4.E3.E.E.E5.2E8.E$23.13B42.4B.E4.E.E3.E4.E.E4.E9.E.E3.E4.E.E4.E.E3.E.E.E4.E.E5.E4.E5.E6.E4.E.E.E3.E3.E.E.E5.E.E7.E$24.12B43.3B.E4.E.E3.E4.E.E4.E9.E2.E2.E4.E.E4.E.E4.2E.E3.E2.E5.E3.E6.E4.E.E4.E.E2.E2.E4.2E.E5.E2.E2.E3.E$24.13B43.2B.E4.E.E3.E5.E5.5E5.E3.E2.4E3.4E2.E5.E.4E3.5E.4E8.4E3.4E2.E3.E.E5.E.5E.E3.E2.3E$25.10B46.B$25.8B$26.5B$26.3B!
I am tentatively considering myself back.

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

Re: Spaceship Discussion Thread

Post by calcyman » October 7th, 2020, 6:47 pm

MathAndCode wrote:
October 7th, 2020, 5:32 pm
Something else that I don't get is using orthogonal bounding boxes for non-orthogonal spaceships.
Yes, I totally agree with you! That's why ikpx2 uses a coordinate system where:
  • the 'vertical' basis vector is chosen to be exactly in the direction of travel;
  • the 'horizontal' basis vector is reduced (as short and orthogonal to the vertical basis vector as possible.
As a result, ikpx2's definition of 'width' is incomparable to other search programs, because other search programs use axis-aligned bounding boxes.

This function is responsible for choosing the basis vectors: https://gitlab.com/apgoucher/ikpx2/-/bl ... ce.hpp#L53

It actually took several attempts to get this right. The original ikpx chose the horizontal basis vector to be axis-aligned and the vertical basis vector to be reduced; this happened to work reasonably well for (2,1)c/6, but poorly for other velocities (as Exa noticed). Then ikpx 2.0 chose the vertical basis vector to be in the direction of travel, but didn't reduce the horizontal basis vector; this meant that partials point in the 'correct' direction, but the leading edge is often slanted instead of perpendicular to the direction of travel. It was only ikpx 2.1 (commit f878fd2b, two weeks ago) that finally makes the 'correct' choice for both basis vectors, and it's noticeably faster for exhausting the search space for (2,1)c/7.
What do you do with ill crystallographers? Take them to the mono-clinic!

MathAndCode
Posts: 5143
Joined: August 31st, 2020, 5:58 pm

Re: Spaceship Discussion Thread

Post by MathAndCode » October 7th, 2020, 6:54 pm

calcyman wrote:
October 7th, 2020, 6:47 pm
Yes, I totally agree with you! That's why ikpx2 uses a coordinate system where:
  • the 'vertical' basis vector is chosen to be exactly in the direction of travel;
  • the 'horizontal' basis vector is reduced (as short and orthogonal to the vertical basis vector as possible.
As a result, ikpx2's definition of 'width' is incomparable to other search programs, because other search programs use axis-aligned bounding boxes.

This function is responsible for choosing the basis vectors: https://gitlab.com/apgoucher/ikpx2/-/bl ... ce.hpp#L53

It actually took several attempts to get this right. The original ikpx chose the horizontal basis vector to be axis-aligned and the vertical basis vector to be reduced; this happened to work reasonably well for (2,1)c/6, but poorly for other velocities (as Exa noticed). Then ikpx 2.0 chose the vertical basis vector to be in the direction of travel, but didn't reduce the horizontal basis vector; this meant that partials point in the 'correct' direction, but the leading edge is often slanted instead of perpendicular to the direction of travel. It was only ikpx 2.1 (commit f878fd2b, two weeks ago) that finally makes the 'correct' choice for both basis vectors, and it's noticeably faster for exhausting the search space for (2,1)c/7.
Then why does Sir Robin appear to have scoliosis?
I am tentatively considering myself back.

wwei23

Re: Spaceship Discussion Thread

Post by wwei23 » October 7th, 2020, 6:56 pm

calcyman wrote:
October 7th, 2020, 6:47 pm
and it's noticeably faster for exhausting the search space for (2,1)c/7.
I wish you luck with your searching. gfind doesn't seem to know what an oblique spaceship is, and JavaLifeSearch is probably not a good idea for period-7 spaceships. What's the longest partial you got from the 2004 almost knightship?

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

Re: Spaceship Discussion Thread

Post by calcyman » October 7th, 2020, 7:41 pm

MathAndCode wrote:
October 7th, 2020, 6:54 pm
Then why does Sir Robin appear to have scoliosis?
That's a feature, not a bug.

'Floating rows' were supported in Eugene Langvagen's search program that found the almost knightship, as well as in every version of ikpx and in Andrew Wade's LSSS program. Effectively, it means that we take advantage of translation invariance, so that in a hypothetical width-7 search:

Code: Select all

....o..
...ooo.
..oo.o.
is indistinguishable from:

Code: Select all

..o....
.ooo...
oo.o...
This means that the spaceship only locally needs to fit inside a narrow box; it's possible for its global structure to consist of multiple overlapping narrow boxes, where the overlaps are even narrower connections.

One of the practical advantages of enabling floating rows is that it enlarges the search space without increasing the 'width'. There are two good reasons for this:
  • If you look at the tail of Sir Robin, it's very narrow and gets even narrower as it approaches the end. Intuitively, if the back of a partial is narrower, it's more likely to admit a completion.
  • The time it takes to solve the SAT instances grows as a function (best-case linear; worst-case exponential) of the width.
What do you do with ill crystallographers? Take them to the mono-clinic!

MathAndCode
Posts: 5143
Joined: August 31st, 2020, 5:58 pm

Re: Spaceship Discussion Thread

Post by MathAndCode » October 7th, 2020, 7:54 pm

calcyman wrote:
October 7th, 2020, 7:41 pm
MathAndCode wrote:
October 7th, 2020, 6:54 pm
Then why does Sir Robin appear to have scoliosis?
That's a feature, not a bug.
Ah, yes. 'Tis but a flesh wound.
calcyman wrote:
October 7th, 2020, 7:41 pm
One of the practical advantages of enabling floating rows is that it enlarges the search space without increasing the 'width'. There are two good reasons for this:
  • If you look at the tail of Sir Robin, it's very narrow and gets even narrower as it approaches the end. Intuitively, if the back of a partial is narrower, it's more likely to admit a completion.
  • The time it takes to solve the SAT instances grows as a function (best-case linear; worst-case exponential) of the width.
How is the fact that Sir Robin's tail is tapered relevant if the bounding box is skew?



Edit: 2c/5 movement

Code: Select all

x = 5, y = 8, rule = B3/S23
2bo$b3o$2obo$bo2bo$bob2o$bobo$o2bo$b2o!
I am tentatively considering myself back.

mscibing
Posts: 105
Joined: May 18th, 2010, 8:30 pm

Re: Spaceship Discussion Thread

Post by mscibing » October 8th, 2020, 1:01 pm

calcyman wrote:
October 7th, 2020, 7:41 pm
  • The time it takes to solve the SAT instances grows as a function (best-case linear; worst-case exponential) of the width.
LSSS isn't a general purpose SAT solver, but in going from a width 17 to a width 18 (3,1)c/8 search I'm seeing a 3.5× slowdown. I suspect that SAT instances will also have exponential growth, but with a good (low) exponential constant.

Edit: So for an n+1 width search to be a win over an n width search the shortest spaceship must be much shorter. Maybe even more than 3.5× shorter since much of the work is often near the head. That's not impossible, but it's not likely if an n width spaceship exists at all.

I believe ikpx has a priority queue to pick the partial with the narrowest backend, and this would lead it to prefer tapered spaceships. LSSS (and many other search programs) have a much cruder system: try the search with a narrow max width, and if it's not successful restart the program with a width one wider. The effect is to search for the spaceships that are easier to find (long and skinny) first.
-- Andrew Wade

MathAndCode
Posts: 5143
Joined: August 31st, 2020, 5:58 pm

Re: Spaceship Discussion Thread

Post by MathAndCode » October 8th, 2020, 8:10 pm

I thought of an idea for searching for spaceships. The idea is to set the cells behind the forward movement mechanism to random states and test which work and which don't. If certain cells being on always or almost always result in the forward movement mechanism breaking before at least one repetition, then the search program can start off assuming that they're off. If certain cells always end up on after the intended period if the forward movement mechanism survives, then the program can assume that they're on. Thus, the program starts off knowing which cells are probably on or probably off without using as much computational effort, thus guiding the program so it doesn't spend time on paths that are unlikely to work. A good example is the switch engine. Here is a list of the objects shortly behind the switch engine every 48 generations:
0 generations: Nothing
48 generations: A 23-cell cluster
96 generations: The same 23-cell cluster one one side and a block on the other side
144 generations: The same 23-cell cluster approaching a block on one one side and a block on the other side
192 generations: The same cluster approaching a block on one one side and a block on the other side
240 generations: The same cluster approaching a block on one one side and a block on the other side
288 generations: The same cluster approaching a block on one one side and a block on the other side
336 generations: The same cluster approaching a block on one one side and an eight-cell B-like forward movement mechanism with trailing junk (eleven cells) on the other side
384 generations: The same cluster approaching a block on one one side and a block on the other side
432 generations: The same cluster approaching a traffic on one one side and a blinker and beehive on the other side
480 generations: The same cluster approaching a blinker and beehive on one one side and a boat and block on the other side
528 generations: The same cluster approaching a boat and block on one one side and a block on the other side
576 generations: The same cluster approaching a block on one one side and nothing close behind on the other side
624 generations: The same cluster on one one side and a block on the other side
672 generations: The same cluster approaching a block on one one side and a block on the other side
768 generations: The same cluster approaching a block on one one side and a block and honey farm predecessor on the other side
816 generations: The same cluster approaching some junk on one one side and a long boat on the other side
864 generations: The same cluster approaching a block on one one side and a blinker on the other side
918 generations: The same cluster approaching a blinker on one one side and a block on the other side
960 generations: A somewhat modified cluster approaching some junk on one one side and a block on the other side
1008 generations: The same cluster approaching a block on one one side and some junk on the other side
1056 generations: The same cluster approaching a blinker on one one side and a block on the other side
1104 generations: The same cluster approaching a block on one one side and a honey farm predecessor on the other side
1152 generations: The same cluster approaching a honey farm on one one side and a block on the other side
1200 generations: The switch engine has been destroyed.
The data shows that while the cluster does not always have to appear in its exact form in order for the switch engine to survive (as shown in generations 0 and 960), it appears the vast majority of the time and therefore would likely occur in any stabilization of a switch engine. The same is true for the blocks; they do not have to appear in order for the switch engine to survive for 48 more generations, but they do most of the time. Also, when the switch engine was destroyed, the 23-cell cluster and two block debris behind the switch engine had not occurred for over 300 generations. While this is not conclusive in and of itself, other runs with random cell behind the switch engine reinforce this point. (I omitted one run where the switch engine was destroyed by a glider, two runs that ended in the same way as a previous run, one run that ended in a GPSE, eight runs that ended in a BLSE, and two runs where the switch engine was destroyed before generation 50.)

Code: Select all

x = 29, y = 24, rule = B3/S23
bobo$o$bo2bo$3b3o5$13bo2bo5b2ob2o$15b6ob5o$13bob2o8bob2o$14b2ob2ob6o$14bo2bo2bobobob2o$14bo2bob3o5b2o$14b2o2b2o3b2ob3o$13b3ob3ob4ob2o$14bo5b4ob2o$13b2o3b2obo4b2o$16bobo2b2o3b3o$13bobobobo2bobobobo$13bob2o3b6ob2o$13bob4ob9o$13bo2bo3bobo4b2o$14b2ob2o2bob5o!
The switch engine initially develops the stable 23-cell cluster and two block trail and is stable then. It loses that trail around generation 300, never gets it back, and dies about 250 generations later.

Code: Select all

x = 29, y = 24, rule = B3/S23
bobo$o$bo2bo$3b3o5$14bobo4b4obo$14bo2b2o2bo5b2o$16bob3obo2b4o$14b3obob5o2b2o$13b4ob2o3bo4bo$14bo2bo3b2ob4o$13bo4b4obo2bobo$14bobob2ob2obobobo$13b2ob7o2b2obo$14b2obo2bo2bo2bo$14bo2bob2obo3bobo$15bo2bo2b2o2b3o$13bo2bob3o5b2o$15bobobo2b2obo$15bob2o6b4o$13bo5b2o2bo3bo!
The switch engine develops the 23-cell cluster and two block trail around generation 150 then gradually loses it between generations 650 and 1000 but then gradually regains it between generations 1100 and 1400. A beehive instead of a block at generation 1680 causes the switch engine to lose its stable trail again, and the debris kills the switch engine around generation 1850.

Code: Select all

x = 29, y = 24, rule = B3/S23
bobo$o$bo2bo$3b3o5$14bo2b3obo2bo2bo$13bobob2o2bo2bo2b2o$14bo2bo3b2ob2o2bo$14b2o2b2o3b6o$15b3o2bo4bobo$13bo2bob2o2bo2bob2o$13bo2bob5o3bobo$13b5ob3o3bobo$15b2o2bo2bob4o$13bo2b3o4b3ob2o$13bob5obob6o$14bob3o2bobo2bo$13b4o7bobobo$13b4ob2ob4o2bo$13b8o3bo3bo$16bobobo2b3obo!
The switch engine never gains the stable trail and is destroyed around generation 150.

Code: Select all

x = 29, y = 24, rule = B3/S23
bobo$o$bo2bo$3b3o5$14bo5b2o2bo2b2o$13b3obo2b2ob3o2bo$13b2ob4o3b2o2b2o$13bo4bobobob2obo$15bo2bobo3b2obo$14b2obo2bo2bob3o$14b3ob2o2bo3b3o$13bo2bo2bobo2bobo$13bobobo2b3ob2o2bo$15b2o2b3o3b2o$13bo2bo2bob7o$13b2obob2o4b3o$13b7obob2ob3o$13b4obo3b4o$14b2ob3obo3bobo$13b3ob2ob2ob5o!
The switch engine partially develops the stable trail early on but never completely develops it and is destroyed about generation 400.

Code: Select all

x = 29, y = 24, rule = B3/S23
bobo$o$bo2bo$3b3o5$13b5obobo2b2ob2o$13bo4bob4o3bo$17bo2bo2bobobo$13bo2bobob3ob3obo$13bobob4o2bobo$13bobo3b2obo2bo$19b6o2b2o$13b2ob3o3b2obo2bo$18b6ob2o$17bob2obo5bo$14b2obobo4b4o$13b2obob2o4b5o$13bo3b3o2bob2o2bo$13bo2bobob2ob3ob2o$13b2obo4b2ob2o2bo$13bo3bo9bo!
The switch engine develops the three-cluster stable trail early on but starts to lose it after generation 200 and never has a three-cluster stable trail again except twice around generation 800. It dies around generation 950.

Code: Select all

x = 29, y = 24, rule = B3/S23
bobo$o$bo2bo$3b3o5$13b2o2bobo2bo4bo$14bobob3obo3b2o$15bo4bo2b2ob2o$13bob3ob2o2bob4o$13b2obo2bob3o3bo$16bo2b5o2bobo$17bo2b2obobob2o$14b3obobo3b3obo$14b4o2b3ob3obo$15b2o2bobo2b2o2bo$14bobobo3b3o2b2o$13b2ob2obo2b2o3b2o$13b2o2bobob3ob3o$14b4o4b3obo$13b4obob2obo2bo$17bo4bo2b4o!
The switch engine is followed by the twenty-three cell cluster at every multiple of 48 generations except two of the last three before the switch engine dies (and of course at generation 0), which is around generation 2,200. However, this is not followed by two blocks at most multiples of 48 generations.

Code: Select all

x = 29, y = 24, rule = B3/S23
bobo$o$bo2bo$3b3o5$13b3o2bo5bobo$13b4obob4ob4o$13b2obo4b4obobo$15b6o2bob4o$13b4o3bob2ob3o$17bo2bobo3bobo$15bob2o4bo3bo$13b4ob2o4b2ob2o$18b3o2b4o$14b2o2b4obobobo$14bo2b2o2bo5b2o$13b2o2bo3b3o2b2o$13b3o3b3obo2bo$14b2o3bo2b6o$14bobo2bobo5b2o$16bo4b3ob3o!
This doesn't develop the stable three-cluster trail and dies around generation 100.

Code: Select all

x = 29, y = 24, rule = B3/S23
bobo$o$bo2bo$3b3o5$15bo2bo3b3o3bo$13b3ob2ob2o$13bobo2bo7bobo$14bo6bobo3b2o$13b2o2b3ob2o3bo$14bobo2b2obo2b4o$15bo2b3o5b3o$14bob7obo3bo$15b3ob3o3b4o$14b6o2b3o$15bobo4b6o$16b2o5b2o2b2o$13b2obo3bo2bo2bo$13bob2o3b3o4b2o$17b2obobobob2o$20b2ob2o2bo!
This develops a stable three-cluster trail by generation 150, loses it around generation 400, and dies around generation 500.

Code: Select all

x = 29, y = 24, rule = B3/S23
bobo$o$bo2bo$3b3o5$16bob2o2bo2b2obo$13b2o2bob2o2bo3bo$13bo3b2ob2obo2bo$15b4o2bo2bobobo$13b4o4b2o2bobo$13b3o5b4o2bo$13bobo3bobo3bobo$13bob3o2b4o2bo$13b2o2b4o2bo4bo$13bob2ob2obob5o$13b7ob2o2b2o$19bobo2bo$13bob2o3bobo3b2o$13b2o6b2ob5o$13bobo2bo2b2o5bo$16bob6obobo!
This doesn't develop the stable trail and dies around generation 100.

Code: Select all

x = 29, y = 24, rule = B3/S23
bobo$o$bo2bo$3b3o5$14bob2obob2obo$14b3o2bobo3bob2o$15bobob2ob2o$13bob2o2bo5b4o$13b2o2b3ob2o3b3o$14bo2b4o2b4obo$15b2o2b5o3b2o$14b2o4b5o2b2o$13bo2b4o2bob2obo$17b3o4b2obo$13b3ob3obo2b2o$13bob2o3bo2bo2b3o$14bo3bo5bo2b2o$14bo4bobob4obo$13bob2o5b5o$14b2obobob8o!
This doesn't develop the stable three-cluster trail. At generation 288, its 23-cell cluster can be seen interacting with some junk, and the resulting reaction kills the switch engine about thirty generations later.
The data shows that having two blocks behind the 23-cell cluster tends to increase switch engine stability. There is one exception, the sixth RLE, where the switch engine survives for over 2,000 generations without having two blocks behind its 23-cell cluster at most multiples of 48, but this means that most spaceship-searching programs would spend most of their time on switch engines not followed by two blocks even though most of the hope for stabilizing a switch engine would come there. Therefore, my method would be better in this circumstance if one only cared about finding a spaceship and not necessarily knowing that one had found all spaceships in a given bounding region.
Here are the advantages and disadvantages of my idea.
Advantages:
  • It does not waste time looking for less likely partials, so it would be quicker.
  • It is theoretically (because it feeds its results to another program that probably isn't compatible) compatible with higher periods with the same simplified speed.
  • The initial part does not take exponentially more time as a function of the period.
Disadvantages:
  • Too few runs of random soup will compromise the ability to make accurate assessments of the probability (although this will probably only apply to the first few generations, so this should not be a major problem unless the partial dies before two periods, in which case it's probably not a good partial anyway).
  • It is not exhaustive.
    • It is possible to miss some spaceships (although the time not used finding those spaceships could theoretically be used finding more spaceships in other speeds).
    • It is possible for multiple computers to pursue the same partial that turns out to be a dead end.
  • No one has coded it yet.

By the way, this changes speed four times.

Code: Select all

x = 7, y = 6, rule = B3/S23
4b3o$4bobo$3bo2bo$3bobo$3b3o$3o!
Last edited by MathAndCode on November 8th, 2020, 10:56 pm, edited 1 time in total.
I am tentatively considering myself back.

User avatar
yujh
Posts: 3068
Joined: February 27th, 2020, 11:23 pm
Location: I'm not sure where I am, so please tell me if you know
Contact:

Re: Spaceship Discussion Thread

Post by yujh » October 9th, 2020, 5:25 am

MathAndCode wrote:
October 8th, 2020, 8:10 pm
I thought of an idea for searching for spaceships. The idea is to set the cells behind the forward movement mechanism to random states and test which work and which don't. If certain cells being on always or almost always result in the forward movement mechanism breaking before at least one repetition, then the search program can start off assuming that they're off. If certain cells always end up on after the intended period if the forward movement mechanism survives, then the program can assume that they're on. Thus, the program starts off knowing which cells are probably on or probably off without using as much computational effort, thus guiding the program so it doesn't spend time on paths that are unlikely to work. A good example is the switch engine. Here is a list of the objects shortly behind the switch engine every 48 generations:
This can be completed by modifying apgsearch, I think.
(We do have search for two se and a block/soup)
Rule modifier

B34kz5e7c8/S23-a4ityz5k
b2n3-q5y6cn7s23-k4c8
B3-kq6cn8/S2-i3-a4ciyz8
B3-kq4z5e7c8/S2-ci3-a4ciq5ek6eik7

Bored of Conway's Game of Life? Try Pedestrian Life -- not pedestrian at all!

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

Re: Spaceship Discussion Thread

Post by dvgrn » October 9th, 2020, 8:12 am

yujh wrote:
October 9th, 2020, 5:25 am
MathAndCode wrote:
October 8th, 2020, 8:10 pm
The idea is to set the cells behind the forward movement mechanism to random states and test which work and which don't. If certain cells being on always or almost always result in the forward movement mechanism breaking before at least one repetition, then the search program can start off assuming that they're off. If certain cells always end up on after the intended period if the forward movement mechanism survives, then the program can assume that they're on. Thus, the program starts off knowing which cells are probably on or probably off without using as much computational effort, thus guiding the program so it doesn't spend time on paths that are unlikely to work. A good example is the switch engine. Here is a list of the objects shortly behind the switch engine every 48 generations:
This can be completed by modifying apgsearch, I think.
(We do have search for two se and a block/soup)
Didn't someone try running a search for a one-engine Cordership along these lines at one point? It's certainly been discussed. Anyone have a link?

Also, codeholic's search for c/2 fuses for the pufferfish implemented the first sentence above, but didn't bother with anything complicated like the second and third sentences -- just tried one random trailing configuration after another, and the fuse for the pufferfish spaceship eventually showed up.

wwei23

Re: Spaceship Discussion Thread

Post by wwei23 » October 9th, 2020, 8:52 am

I would like to mention that my program doesn't just blindly brute-force, it brute-forces cell-by-cell. Here's a simple example for a still life.

Code: Select all

x=3, y=3, rule=LifeHistory
DDA$DAD$DDE!
We need to find the state of the yellow cell, to stabilize the green cell in the middle. The yellow cell is the only cell whose state is unknown and influences the green cell. In this case, it must be on. The program always tries turning a cell off before it tries turning it on.

Code: Select all

x=3, y=3, rule=LifeHistory
AAD$AAD$DDE!
Here, the yellow cell must be off.
In this example, neither on nor off work, therefore, we backtrack, setting on cells to unknown until we reach an off cell, where we turn it on.

Code: Select all

x=3, y=3, rule=LifeHistory
DAA$AAD$DAE!
When we reach the end of a row, we have to stabilize several cells at once. Here, we have to stabilize the cells above and to the left, directly above, and above and to the right. Notice that we're stabilizing cells around the settable search region. This means that the pattern can expand outside of its current width and shrink back into the initial width at the end of a cycle. ikpx requires a spaceship to be n cells wide only locally in space, I've done the analogous thing but in time instead of space. In other words, temporal floating rows. (Example: LWSS)

Code: Select all

x=9, y=9, rule=LifeHistory
DDDDDDDDD$DDDDDDDDD$DDDDADDDD$DDDADADDD$DDDADADDD$DDAADAEDD$DD.....DD$DD.....DD$DD.....DD!
The cell array is automatically extended if space is exhausted.

MathAndCode
Posts: 5143
Joined: August 31st, 2020, 5:58 pm

Re: Spaceship Discussion Thread

Post by MathAndCode » October 9th, 2020, 9:41 am

yujh wrote:
October 9th, 2020, 5:25 am
MathAndCode wrote:
October 8th, 2020, 8:10 pm
I thought of an idea for searching for spaceships. The idea is to set the cells behind the forward movement mechanism to random states and test which work and which don't.
This can be completed by modifying apgsearch, I think.
I don't think know because apgsearch only reports actually spaceships, not especially good partials. However, the idea is similar.
dvgrn wrote:
October 9th, 2020, 8:12 am
Didn't someone try running a search for a one-engine Cordership along these lines at one point? It's certainly been discussed. Anyone have a link?

Also, codeholic's search for c/2 fuses for the pufferfish implemented the first sentence above, but didn't bother with anything complicated like the second and third sentences -- just tried one random trailing configuration after another, and the fuse for the pufferfish spaceship eventually showed up.
So my proposed method would work for higher-period speeds, such as 4c/11 and 5c/12?
I am tentatively considering myself back.

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

Re: Spaceship Discussion Thread

Post by dvgrn » October 9th, 2020, 10:00 am

MathAndCode wrote:
October 9th, 2020, 9:41 am
So my proposed method would work for higher-period speeds, such as 4c/11 and 5c/12?
For some definitions of "work", sure. It seems very^137 unlikely to actually find anything at those speeds, but you never know for sure until you try (or until the Sun burns out).

MathAndCode
Posts: 5143
Joined: August 31st, 2020, 5:58 pm

Re: Spaceship Discussion Thread

Post by MathAndCode » October 9th, 2020, 10:17 am

dvgrn wrote:
October 9th, 2020, 10:00 am
MathAndCode wrote:
October 9th, 2020, 9:41 am
So my proposed method would work for higher-period speeds, such as 4c/11 and 5c/12?
For some definitions of "work", sure. It seems very^137 unlikely to actually find anything at those speeds, but you never know for sure until you try (or until the Sun burns out).
It has been used to find higher-period spaceships, such as a p36. What coding language are the lifesrc/WLS/JLS-style search programs written in?
I am tentatively considering myself back.

wwei23

Re: Spaceship Discussion Thread

Post by wwei23 » October 9th, 2020, 11:00 am

MathAndCode wrote:
October 9th, 2020, 10:17 am
What coding language are the lifesrc/WLS/JLS-style search programs written in?
I know that JLS is written in Java. lifesrc and WLS is likely C++. JSeeker is in JavaScript, although it's not useful at these periods.

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

Re: Spaceship Discussion Thread

Post by dvgrn » October 9th, 2020, 11:25 am

MathAndCode wrote:
October 9th, 2020, 10:17 am
dvgrn wrote:For some definitions of "work", sure. It seems very^137 unlikely to actually find anything at those speeds, but you never know for sure until you try (or until the Sun burns out).
It has been used to find higher-period spaceships, such as a p36.
The technique has been used to find completions for known puffers that were already self-supporting, like the pufferfish and (to some extent) the switch engine. There aren't any known self-supporting 4c/11 or 5c/12 front ends that are likely to benefit from this back-end-finding technique.

Somewhat similarly, Jason Summers and Paul Tooke were able to find new various spaceships and puffers back in 2001-2002 -- mostly 2c/4 and c/3, I think -- by randomizing the back ends of large spaceships and incomplete partial spaceships. The usual "randomization" I think was just chopping off the back ends of partials, and running them to see if the front end happened to survive.

We're still doing things like this nowadays, like running various partials from Sir Robin/minstrel searches through Catagolue's census to see if any new (2,1)c/6 ships or puffers happened to stabilize. (I don't think any surprises showed up there.)

In general this kind of thing works better the faster the ship travels; there's a much higher likelihood that a fast ship will be able to successfully "run away from its problems" and leave behind, if not empty space, then at least some periodic ash.

wwei23

Re: Spaceship Discussion Thread

Post by wwei23 » October 9th, 2020, 11:55 am

dvgrn wrote:
October 9th, 2020, 11:25 am
In general this kind of thing works better the faster the ship travels; there's a much higher likelihood that a fast ship will be able to successfully "run away from its problems" and leave behind, if not empty space, then at least some periodic ash.
Is this why line puffers seem to break when I try to make a c/3 one?
EDIT: Oops, forgot to trim the quote. FIxed now.

User avatar
Kazyan
Posts: 1247
Joined: February 6th, 2014, 11:02 pm

Re: Spaceship Discussion Thread

Post by Kazyan » October 9th, 2020, 11:58 am

There does exist a semi-reasonable 3c/14 frontend that hasn't been stabilized:

Code: Select all

x = 15, y = 10, rule = LifeHistory
3.3D3.3D$2.D3.D.D3.D$2.D3.D.D3.D$2.D3AD.D3AD$D.A3DA.A3DA.D$D.A3.A.A3.
A.D$D.A3.A.A3.A.D$A2.3A3.3A2.A$A13.A$A13.A!
Tanner Jacobi
Coldlander, a novel, available in paperback and as an ebook. Now on Amazon.

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

Re: Spaceship Discussion Thread

Post by dvgrn » October 9th, 2020, 12:36 pm

Kazyan wrote:
October 9th, 2020, 11:58 am
There does exist a semi-reasonable 3c/14 frontend that hasn't been stabilized...
I was careful to say "self-supporting" front ends, so as not to get anyone's hopes up too much. It's a lot easier to find ways to convert a working puffer into a spaceship, than to find a complete spaceship given just a high-period front end (no matter how semi-reasonable it may be).

MathAndCode
Posts: 5143
Joined: August 31st, 2020, 5:58 pm

Re: Spaceship Discussion Thread

Post by MathAndCode » October 9th, 2020, 3:42 pm

wwei23 wrote:
October 9th, 2020, 11:00 am
MathAndCode wrote:
October 9th, 2020, 10:17 am
What coding language are the lifesrc/WLS/JLS-style search programs written in?
I know that JLS is written in Java. lifesrc and WLS is likely C++. JSeeker is in JavaScript, although it's not useful at these periods.
Unfortunately, I don't know any of those languages well enough to code my method myself anytime soon. (I know C++, but I don't know it well.) There's probably some way to combine one of those languages and a language that I already know well, but I probably shouldn't try to do that unless I already know both languages well.
dvgrn wrote:
October 9th, 2020, 11:25 am
The technique has been used to find completions for known puffers that were already self-supporting, like the pufferfish and (to some extent) the switch engine. There aren't any known self-supporting 4c/11 or 5c/12 front ends that are likely to benefit from this back-end-finding technique.

Somewhat similarly, Jason Summers and Paul Tooke were able to find new various spaceships and puffers back in 2001-2002 -- mostly 2c/4 and c/3, I think -- by randomizing the back ends of large spaceships and incomplete partial spaceships. The usual "randomization" I think was just chopping off the back ends of partials, and running them to see if the front end happened to survive.

We're still doing things like this nowadays, like running various partials from Sir Robin/minstrel searches through Catagolue's census to see if any new (2,1)c/6 ships or puffers happened to stabilize. (I don't think any surprises showed up there.)

In general this kind of thing works better the faster the ship travels; there's a much higher likelihood that a fast ship will be able to successfully "run away from its problems" and leave behind, if not empty space, then at least some periodic ash.
My idea was originally intended to guide a search program that already exists, not to create a new one. Let me give another example of how this would be useful, this time with the B-heptomino's c/2 forward movement mechanism. The c/2 forward movement mechanism typically stops (although often it just switches to c/3 forward movement) when instead of having bo$3o at the front, we have b0$obo at the front, so the cells at (0, 0) and (2, 0) aren't born the next generation because they only have two neighbors instead of three. The reason that the cell just behind the cell at the leading edge is dead instead of alive is typically because the previously generation has 3o$obo instead of 3o$o2b (or 3o$2bo), so that cell dies from overpopulation because it has four neighbors instead of three. The reason that that fourth neighbor is alive is typically because the previous generation's front was 2bo$b3o$o2bob or 2bo$b3o$bobob instead of 2bo$b3o$o2b2o or 2bo$b3o$bob2o, so the cell at (1, 1) is not killed by overpopulation. The reason, in turn, that the cell at (0, 2) is off instead of on is that the previous front part is b3o$o2bo$2o3b (or b3o$o2bo$o4b or b3o$o2bo$5b) instead of b3o$o2bo$2obo (or b3o$o2bo$o2bo or b3o$o2bo$3bo) or b3o$o2bo$2o2bo (or b3o$o2bo$o3bo or b3o$o2bo$4bo), so the cell at (4, 1) would not be born for the next generation. (Some variants instead prevent the cell at (4, 1) from being born via overpopulation, specifically b3o$o2bo$2o2b2o (or b3o$o2bo$o3b2o or b3o$o2bo$4b2o), but this does not appear to be as common. There are other variants as well, and not just at this generation, but all of them are even less common. Besides the B-heptomino, examples of this mechanism include 2bo$b3o$o2b2o$2o$bo and bo$3o$ob2o2$2o.) The reason that the cells at (3, 2) and (4, 2) are not alive is most often because the front end of previous generation was 2bo$b3o$2obo$3?2o, so the cell at (3, 2) died because of overpopulation, and the cell at (4, 2) was not born because it had four neighbors instead of three. This, in turn, is typically because front of the generation before that was b3o$bo2bo$o$3b2o (or b3o$bo2bo$bo$3b2o) instead of b3o$bo2bo$o$4bo (or b3o$bo2bo$bo$4bo), b3o$bo2bo$o$3bob (or b3o$bo2bo$bo$3bob), or b3o$bo2bo$o$5b (or b3o$bo2bo$bo$5b). There are ways to stabilize it, like b3o$bo2bo$o5b2o$3b2o2bo$3b2o, but these aren't as common, so most search programs would get in the weeds going through those possibilities for a while, but my method would focus on the more promising possibilities. Of course, my method wouldn't be exhaustive, so it would have missed Pushalong 1, but it would likely find more spaceships per search time than most methods.
Kazyan wrote:
October 9th, 2020, 11:58 am
There does exist a semi-reasonable 3c/14 frontend that hasn't been stabilized
This might be a good example where my idea would work better. There are other ways to make a pre-pulsar-based 3c/14 orthogonal forward movement mechanism besides blinkers, but the blinkers seem the most promising.
I am tentatively considering myself back.

wwei23

Re: Spaceship Discussion Thread

Post by wwei23 » October 11th, 2020, 9:45 am

dvgrn wrote:
October 7th, 2020, 11:18 am
wwei23 wrote:
October 7th, 2020, 11:09 am
I'd like to disagree with that. I don't get P5 results "pretty quick", and P4 is definitely not instant. :P
It's all a matter of perspective, I guess. Any search that gets results in less than a day is "pretty quick" in my book, and less than an hour is "just about instant" -- at least compared to the Sun-will-burn-out-first searches that we're talking about for higher periods.
Well, it's taken over a day to complete the P5 search (it's probably not done yet, even), so P5 is definitely not "pretty quick".

EDIT: :P
Edit 2: It's complete! And it uses four front propulsion mechanisms! It's beautiful! :o

Code: Select all

x = 27, y = 208, rule = B3/S23
9b3o3b3o$5bo3b3o3b3o3bo$4b3o2bo2bobo2bo2b3o$3bo2bo2b2obobob2o2bo2bo$3b
3obo4bobo4bob3o$3b3obo3bo3bo3bob3o$6bo13bo$obo6bo7bo6bobo$o2bo2bo2bo7b
o2bo2bo2bo$o4b4o9b4o4bo$4bo3bo9bo3bo$bo6bo9bo6bo$2ob2o3b2o7b2o3b2ob2o$
4o6b2o3b2o6b4o$3b3o3b3o3b3o3b3o$3b2obo2bo7bo2bob2o$10b2o3b2o$6bob4o3b
4obo$7b3o7b3o$5bo3bo7bo3bo$4bo5bo5bo5bo$4bo4bo7bo4bo$3bo2b2o11b2o2bo$
5b2obo9bob2o$3bo2bo2bo7bo2bo2bo$5bo3bo7bo3bo$3bob3o11b3obo$4b3o3b2o3b
2o3b3o$9b2obobob2o$9bo2bobo2bo$8bo3bobo3bo$8b3obobob3o$12bobo$11b2ob2o
$3b2o3b2o7b2o3b2o$b2o2bo2b5ob5o2bo2b2o$b2obo2b2ob3ob3ob2o2bob2o$2bobob
o4b2ob2o4bobobo$2bobobo13bobobo$3b3obo11bob3o$5b3o11b3o$6bo2bo7bo2bo$
6bob3o5b3obo$8bo2bo3bo2bo$10bobobobo$7bo2bo5bo2bo$7bo11bo$7b5o3b5o2$5b
o4b2o3b2o4bo$3b2o17b2o$3bobo3b2o5b2o3bobo$3bob2o2b2o5b2o2b2obo$4b2ob3o
7b3ob2o$4bo3bo9bo3bo$5b2o13b2o$3b3o4bo5bo4b3o$3bo5b2o5b2o5bo$5bo3bo2bo
bo2bo3bo$4b2o2b2obo3bob2o2b2o$10b2o3b2o$4bo4b2o5b2o4bo2$7bob3o3b3obo$
4b2o4bobobobo4b2o$3bobo15bobo$3b2o17b2o$3bo19bo$5bo15bo$3bo2bo13bo2bo$
3bo2bo13bo2bo$3bo4bo9bo4bo$4b6o7b6o$9bo7bo$4b3o13b3o$4bo2bo11bo2bo$3b
2obo13bob2o$3bo4bo9bo4bo$2b2o4bo9bo4b2o$2bo2b2o13b2o2bo$b4obo13bob4o$
2bobo17bobo2$3b3o3b2o5b2o3b3o$4b2o3bob2ob2obo3b2o$b2o8b2ob2o8b2o$2b2o
2b3o2b2ob2o2b3o2b2o$4bobob4o3b4obobo$11bo3bo$7b5o3b5o$7bo3bo3bo3bo$6bo
bo2b2ob2o2bobo$8bo2b2ob2o2bo$11b2ob2o2$7b4o5b4o$7b4o5b4o$5bo4bo5bo4bo$
3b4o13b4o$3bo3bo11bo3bo$3bo19bo$3b2o17b2o$4bo2bo11bo2bo$5bob5o3b5obo$
5bobobobo3bobobobo$8b2obo3bob2o$10bo5bo$6b2o11b2o$5bobo11bobo$5bo15bo$
3bo2bo13bo2bo$3bo5bo7bo5bo$6bobob2o3b2obobo$4bobobo9bobobo$3b2obobo3bo
bo3bobob2o$3b2o2b3ob2ob2ob3o2b2o$3bobo4bo5bo4bobo$4bo3bobo5bobo3bo$7bo
3b2ob2o3bo$6b2obob2ob2obob2o$3b3obobo7bobob3o$3bo7b2ob2o7bo$7b2o9b2o2$
9bo7bo$7b3ob2ob2ob3o$10bobobobo$7b4obobob4o$7b3obo3bob3o$7bob3o3b3obo$
10b2o3b2o$5bo15bo$4b3o13b3o$4bo2bo11bo2bo$3bo2b2o11b2o2bo$8b2o7b2o$4bo
3bob2o3b2obo3bo$5bo3bob2ob2obo3bo$7bo2bobobobo2bo$5bob2o9b2obo3$5b2ob
2o7b2ob2o$7b2o9b2o$7bo11bo$6b2o11b2o$6b2obo7bob2o2$6b2ob2o5b2ob2o$7bo
2bo5bo2bo$7bob2o5b2obo$7b5o3b5o$7bo3bo3bo3bo$11bo3bo$4bo4b2o5b2o4bo$3b
ob3ob2obobob2ob3obo$2b2o2bobo2bo3bo2bobo2b2o$2b2o2bo13bo2b2o$3bo3bo2bo
5bo2bo3bo$3b3o2b2o7b2o2b3o$4b2o15b2o$4b3o13b3o$6b3o9b3o$9bo7bo$6bo2bo
7bo2bo$7bob2o5b2obo$6bo2bo7bo2bo$2b2ob2o2b2o5b2o2b2ob2o$2bo5bo2bo3bo2b
o5bo$2bo2bo3bo2bobo2bo3bo2bo$9bobo3bobo$9b3o3b3o$9bo7bo$2b2o3b3o7b3o3b
2o$2bob2o15b2obo$2bo3b3o9b3o3bo$2bob2obo3b2ob2o3bob2obo$3bo6b2o3b2o6bo
$6bo2bo7bo2bo$9bobo3bobo$5b3o2bo5bo2b3o$7bo11bo$7b2obo5bob2o$6bo13bo$
6b2o3bo3bo3b2o$5bo4b2o3b2o4bo$4b6o7b6o$3bo19bo$2bobo3bobo5bobo3bobo$2b
o2bo2bobo5bobo2bo2bo$3bo4b3o5b3o4bo$6b2o11b2o$6bo13bo$6bob2o7b2obo$6bo
4bo3bo4bo$7b5o3b5o$6b2o4bobo4b2o$8b3obobob3o$3b5o4bobo4b5o$3bo3bo4bobo
4bo3bo$4b3o4bo3bo4b3o$5b2o2bobo3bobo2b2o$9b2o5b2o$2b3o5b2o3b2o5b3o$bob
o19bobo$11bo3bo$bobo7bo3bo7bobo$2bo21bo!

Post Reply