Here's some detail on how I found the recent puffer engine, for those who are curious.
The partial result posted
here was found with
JLS. I first tried to find a puffer that emits a 4-line (beehive predecessor). Nothing I tried was working. I then remembered how a pre-TL can sometimes interact with a sparker (like in
Medusa) that might occur analogously at speed c/4 diagonal. I knew that my setup had to look something like this, a 9-line with space dust above it that must interact with a pre-TL 4 generations later (the space dust is random junk I drew and not anything from a search):
Code: Select all
x = 32, y = 9, rule = B3/S23
26bobo$5bobo16b2o5bo$o2b2o16bo2bo3bo2bo$o2bo3bo2bo3bobobo3b9o$b9o17bo$
26bobo$25bo3bo$26bobo$27bo!
Advancing the above pattern 1 generation shows that the line will be damaged because a bit from the pre-TL below the line and a bit from the space dust above the line overpopulate a two bits within the line. This doesn't necessarily mean the engine will fail, but it does seem to make it more likely (note that a 10-line setup would ). Therefore I restricted those space dust bits so that the 9-line wouldn't be broken in this way. Note that a similar 10-line setup wouldn't work, because the line would always be broken by the output, regardless of the space dust above the line.
Even this setup is often not enough to get a viable engine. Consider the same pattern with the problem bit removed:
Code: Select all
x = 33, y = 9, rule = B3/S23
5bobo19bobo$o2b2o17bo2b2o$o2bo6bo3bobobo3bo2bo6bo$b9o13b9o$28bo$27bobo
$26bo3bo$27bobo$28bo!
After 2 generations the engine area is very similar, except the pattern on the right has a domino in the middle, while the pattern on the left doesn't. This domino will most likely interfere with the reformation of the 9-line, so I ultimately decided that the 9-line needed to have very nearly two rows of dead cells above it like so:
Code: Select all
x = 33, y = 10, rule = B3/S23
3b2o2bo17b2o2bo$2b2o2bo17b2o2bo2$o9bo3bobobo3bo9bo$b9o13b9o$28bo$27bob
o$26bo3bo$27bobo$28bo!
I made the 9-line with (almost) 2 rows of dead cells above it my generation 0 in JLS. I then restricted the space dust above the 9-line to be very short and sorted the search from near the center of the line outwards, with unknown cells beyond a certain point. Here was my setup as a JLS status file (change ".txt" to ".jdf" to load in JLS):
And here is a cropped screenshot of the important region of the search in generation 0 (engine is traveling up and left):
- c4d-puffer-setup-gen0.png (9.22 KiB) Viewed 765 times
(note: I actually first searched for shorter height solutions; it is my general policy to start with a search so short it finishes instantly and then increase the height 1 at a time until I either find something or the search is taking too long).
The next element of the search is probably the most important: luck. I ran the above search, took the first result, and expanded the ends enough that I could test the viability of the engine by hand in Golly (I figured there was no point in pursuing an engine that would fail after only a couple cycles). I did run into trouble on my first test. In the third cycle, a banana spark was formed that decayed into a domino fairly close to the engine core (see generations 2 and 3 of the following pattern):
Code: Select all
x = 32, y = 27, rule = B3/S23
9bobo$7b3o$7b3o$8bobo$7bo3bo$6b3obo$5bo4bo$6bobo$8b4o$10b2o11bo$8bobo
11b5o$9b2o11bo2b2ob2o$9bo14bo3b2o$o7b2o14bo4bo$2o4bob2o3bo6b2o2b3ob2o$
3bob2o6b2o4b3ob2o6bo$bob2o2b4obo3b3ob2o2bobo3b2o$2obo19b2obobo2bo$2bob
obob2o8b2o2bobo$6bo3b9o3b4o$24bo$17bobo$13b3obo2bo$13bo2bo$13bo4b2o2$
15b3o!
In my original (unposted) partial, this domino interacted with the engine and destroyed it. I then went back into JLS and fiddled with that area to prevent the type of interaction that occurred (I didn't save this particular search setup). Luckily there were plenty of alternative partial results that didn't have this problem.
I then continued testing in Golly. When I got through about 6 cycles I was thoroughly convinced that this would be a good puffer engine, although I might have been satisfied with just 3, as sparkers can make up for some problems as seen in this exact case where the unmodified engine still eventually destroys itself. When I got through 13 cycles I was even more excited to see that the debris had moved far away from the engine, so the engine's "natural base period" (non-precise term) was 52, and unsolved period.
I tried to further expand the two branches, but the front branch was giving me large, unwieldy partials, so I did my usual branching shenanigans and quickly found what looked like a good branch point. At that point I felt I had adequately demonstrated that the puffer
could be completed with some unknown but not unreasonable amount of effort. I threw the problem to Amling who I knew would be able to solve it fairly quickly.