« first day (1003 days earlier)      last day (933 days later) » 

22:25
I've refined my hypercube-based turning tarpit idea a bit. The resulting system covers some corner cases that were not covered by the original idea, but it's also harder to explain. :P
To start, I'll introduce an assembly-like syntax that's easier to read. A program in this syntax is a series of statements, each consisting of a command and a positive integer argument:
NumIn 2
Reg 2
Move 2
Reg 4
NumOut 1
(Don't worry about what the commands do for now, it'll probably change anyway.)
The commands are placed on an N-dimensional hypercube with side length 2, as before. (For this example, N = 3.)
Then each statement is encoded into a bitstring in two parts, representing the command and the argument.
For the command part, 0 means "go to next dimension" and 1 means "toggle index of current dimension." This part must either end in a 1 or consist of exactly N 0s.
Call the argument number A. If the command selection string ended in a 1, the argument string consists of A 1s. If the command selection string ended in a 0, the argument string consists of 0` followed by A-1 1s.
Examples:
If the current command is 000, we're on the leftmost dimension, and we want to execute the command 010 with argument 2, we do 0111: 01 goes to the next dimension and toggles it, 11 executes with an argument of 2.
If the current command is 010, we're on the central dimension, and we want to execute 100 with argument 1, we do 001011: go to rightmost dimension, then go to leftmost dimension and toggle, then go to central dimension and toggle, then execute with argument 1.
If the current command is 100 and we want to execute 100 again with argument 3, we do 000011: 000 goes all the way around, 0 says we want to execute without changing the command, and 11 plus the 0 says execute with argument 3.
So with the following somewhat arbitrary command assignments:
011 NumOut
100 NumIn
110 Reg
111 Move
the above program translates to 0111 0111 0111 00011111 010011
Since it's also true that every command selection string, as described above, starts with a 0, we can leave off the first 0 of the program by convention.
23:27
Just realised Positionally is (mostly) a 1L

« first day (1003 days earlier)      last day (933 days later) »