How? Well, we can’t build a tape that is that long.
Here’s the idea: don’t build the tape. Let the game generate it for us. Set the world generator to superflat and then the game will give us a “tape” that extends to the world border in each direction, a length of a little less than 60 million blocks. The tape is just a single horizontal strip in the top layer of solid blocks. A 0 symbol can be the presence of a block in the strip and a 1 symbol can be absence. Notice that not yet visited portions of the tape are filled with 0s with the help of the superflat world generator.
In order to be a Turing machine, it also needs a read/write head that can move in each direction along the tape, a way to remember the current state, a table of transitions, and the logic that fits all this together. Notice that the tape, as defined, is stationary, and so the head will need to be the thing that moves (in contrast to the natural way TMs are implemented in MC, using piston tapes). And this leads us to… flying machines.
Can we use flying machines to accomplish this feat? It seems so. At one end of the tape, fix a stationary structure, a ROM for the table of instructions. Next, we need a movable structure, perhaps just a single block along the tape that indicates the current position of the head. Then we need a flying machine that moves between the ROM and the head position indicator, which can read the symbol at the head, change the symbol, and move the head indicator in either direction. The head position indicator causes the flying machine to stop, perform an action, and then reverse direction back to the ROM. Changing the symbol at the head can be accomplished with a downward-facing sticky piston that lowers or raises the block at the head. Reading a symbol and moving the head indicator can be done, but are too complicated to describe briefly in words.
So, relatively easily we have a computer with 7.5MB of memory buildable in superflat using items obtainable in survival. And with cobblestone generators it can be built in a regular survival world.
But this is kind of unimpressive. And our machine has a flaw; the speed of the machine is proportional to the head’s distance from one end of the tape. Can we do better?
Maybe. But it would mean the entire ROM would need to move with the head indicator. And so static redstone like redstone dust, torches, and repeaters would not be allowed. The ROM would be composed of individual moving parts (pistons, observers, slime blocks, etc.) in order to do logic and the ROM collectively would itself be a moving part. It would all need to move left and right along the tape while preserving its internal structure. This proves difficult because the individual parts making up the ROM, when moved, tend to activate nearby parts as that’s what they’re made to do.
Note that the ROM can’t be built out of the typical piston-based logic gates since the NOT gate will have at least one piston extended (either at the input or output) which is an immovable block. So, some clever solution is needed.
Perhaps logic gates can be abandoned. Imagine instead that there is a flying machine that carries with it the current state encoded as a binary number and it scans along some structures looking for a matching state, at which location there is data on what to do next. Unfortunately, I only have vague descriptions and ideas, so sorry if this doesn’t make sense.
Reasons why this would be awesome:
- It’s a Turing machine, the simplest and most fundamental of computers, with a very long tape.
- It may be the first computer in MC with 7.5MB of memory buildable using items obtainable in survival.
- There’s no static redstone. The entire structure moves left and right according to the rules of a program (any program!), and the structure that is moving contains the rules of the program that describes its movement. It feels satisfyingly self-referential. It’s a fully programmable flying machine!