Leaving aside the design with two parallel recipes for the moment, this is a follow-up to the problem of making a memory loop starting with just one stream of gliders hitting a block (or a Cordership, or a glider).

dvgrn wrote:Macbi wrote:I'll need to sleep on it. But for now I think I might have noticed a maths mistake.

...

The glider catches up a distance of N/12 at a relative speed of c/6, therefore taking time N/2. But its absolute speed is c/4, so the distance it actually travelled is N/8 and the memory loop will have length N/4. Even worse!

Hmm... that's very plausible math. N/8 certainly looks more reasonable as an Achilles-and-the-Tortoise infinite sum of decreasing distances than N/2, if the first segment is only N/12.

Wait, wait! Now I think I was right the first time...

RecapThe question was: can you add a long chunk of empty space into a single-channel recipe, to allow a Cordership to travel far enough away to anchor the far end of a memory loop? The memory loop has to end up being big enough to include the gap

and the rest of the recipe that builds the two ends of the memory loop.

We insert a gap into a long recipe.

The gap's total diagonal length is N cells.

The last glider before the gap launches a Cordership.

The first glider after the gap follows the Cordership, eventually catching it.

Let's call the first glider after the gap the PGG -- Post-Gap Glider.

The PGG travels length N to reach where the Cordership was launched.

At speed c/4, the PGG will take 4N ticks to travel distance N.

In that time the Cordership will travel distance 4N/12 = N/3 cells.

The PGG now has to catch up to that point, traveling N/3 distance in 4N/3 ticks.

In that time, the Cordership travels 4N/3/12 = N/9 cells.

N/3+N/9+N/27... converges to N/2.

The total size of the memory loop is 2*(N/2) = N, the length of the gap. With the setup described, there's only room in the memory loop to hold the gap, leaving no space for the rest of the recipe.

-- But at least the memory loop isn't length N/4, so inserting a gap doesn't actually make things worse! The mistake seems to have crept in due to thinking of N as a length of time in the very first step, when it's really a distance. I said at the end of the above quote, "... if the first segment is only N/12" -- but gliders don't travel at lightspeed, so the first term in the infinite sum is actually N/3.

Finding a Little More SpaceBut hang on a minute. There might be an unnecessary assumption in my walkthrough. I say "The last glider before the gap launches a Cordership" -- but that's not actually a requirement.

Instead, we can launch the Cordership as quickly as possible, and then spend as much time as we want building the near end of the memory loop. When that's all done, we send a glider immediately to shoot down the Cordership.

According to the above calculations, if we put the Near-End Adjacent Reflectors recipe into the gap, then the resulting memory loop will have just enough room for ... the Near-End Adjacent Reflectors recipe. There still won't be room for the Cordership Launcher recipe or the Far-Away Reflectors recipe, but at least there's room for

something.

It looks like adding just two more 180-degree reflectors will be enough to allow for a memory loop big enough to hold its entire recipe. The recipe will bounce back and forth twice between near-end and far-end reflectors. The NEAR recipe has to be at least as long as the FAR recipe plus the Cordership Launcher recipe, plus any other recipes we might need. Total length of the doubled-back memory loop will be|NER|*2.

I'm Probably Still Wrong SomehowCan somebody please triple-check my math, because clearly I'm not very good at it?

Back to Two DimensionsCorollary: it seems as if the 2D option should work after all -- launch two Corderships at 90 degrees, then build the South corner reflector, then chase down the two Corderships with gliders and use them make targets at West and East corners, and then collaborate to build a target at the North corner.

The total length of the resulting loop is |S|*2, so we can usefully add a gap inside the S corner recipe, to extend |S| until it's as long as |Corderships-launcher| + |W| + |E| + |N| combined.

... Right?

There are actually ways of using freeze-dried slow salvos to encode most or all of the West, East, and North recipes inside the South recipe, but that might be more of a headache than it's worth.

OrthogonalternativesMight not actually need two Corderships. A suitably delayed *WSS launched from South Corner could meet up with a glider from West Corner (created right after the Cordership destruction) to make a target at North Corner. And a *WSS launched from West Corner after

that could meet up with the first glider sent from North Corner toward East Corner, to make a target at East.

The timing of all this is a bit of a nightmare -- it would be a lot easier to just do the Hashlife-unfriendly double 1D memory loop.

And, Setting Our Sights a Little Bit Higher --An implementation of either a 1D or a 2D design would suddenly get us a surprisingly large fraction of the way to a working quadratic-growth replicator...!