My SO and I go out to breakfast every Sunday morning. It’s a weekly ritual that we cherish. I took a peek at today’s puzzle before we left, and while we were eating our eggs and hash browns, I thought I had a fairly good handle on it.
The concept is that there’s a beam of tachyons (because those are totes for reals) that is being fired at a beam splitter, which splits it in two and allows it to continue on, perhaps hitting other beam splitters along the way.
Part 1 is simply to find how many beam splitters get hit in this way.
Well, it’s a recursion problem. If the beam has hit an active beam splitter, stop.
If not, it has not been hit before. Mark the beam splitter active, then send beams to the left and right down to their fates, calling the beam tracker function for each of them recursively.
This works. It works fine. It’s fast and correct.
So let’s see what part 2 has to offer…
[T]he manual recommends the many-worlds interpretation of quantum tachyon splitting: each time a particle reaches a splitter, it’s actually time itself which splits.
Unnngh…. time itself splits.
So, the obvious way to do this would be to simply continue on when encountering a beam splitter that has been hit before, but keep a count for the times it has been hit and just sum up all those counts (plus one for the initial beam) for part 2.
And, surprisingly, that also works.
For the sample data.
Unfortunately, the the actual data, the number of splits rises into the quadrillions. And the Picotron version of Lua has trouble finishing up near-infinite loops. Mind, I didn’t know this was going to be a problem until I tried it out on the actual data. I should have known. I didn’t. Mea culpa.

Recursion was going to be a bad idea. So, I did it a different way. I set off a single beam from the start position, and it went into my beam splitter function, but with the recursive calls removed. Instead, I just marked it active and incremented a new value for that splitter I called “excite” that measures the excitement level. Each time a beam splitter is hit, the excitement level goes up by the strength of the beam that hit it. The initial beam has a strength of 1.
I then iterated through the rows from top to bottom, looking for excited beam splitters and called my beam splitter function for each of them, before and after, with the beam strength being its excitement level.
For part 2, I just summed up the excitement levels of all active splitters. And that number was so large that I couldn’t believe it could possibly be the correct answer…
But it was. The universe would have burned to a cinder before recursion would have provided an answer. This new method was faster than I could follow.
So, what have we learned from this? We’ve learned that recursion is always the answer, until it’s not. We’ve learned that Thomas Young discovered in 1801 that we’re living in a multiverse. And we’ve learned it’s not worth waiting for the end of eternity to get the right answer.







Leave a Reply