A 2D Turing Machine


15/July/2026 For some time, I had been struggling with the idea of a 2D Turing machine, one where the read/write tape head could range out width-wise as well as length-wise (normal operation). I found a tutorial on YouTube by TecHno RayZ which explained the unary addition of 2 numbers as I was reading in Computer Architecture and Organization by Hayes. It's a simple program,

First the r/w head is told to seek Right for any B (blank symbol).
v
0   0   0   B   0   0   B

Then when no more B's are found start erasing.
            v
0   0   0   B   0   0   B

                        v
0   0   0   B   0   0   B

                    v
0   0   0   B   0   B   B

This state is where any B's to the Left are replaced by 0.
            v
0   0   0   0   0   B   B

What if we had a 2D Turing machine.

0   0   0   B   B

-   -   -   -   -

-   -   -   -   -

-   -   -   -   -

-   -   -   0   0
                ^

0   0   0   0   0

-   -   -   -   -

-   -   -   -   -

-   -   -   -   -

-   -   -   B   B
            ^

Immediately the complexity and time cost reduce.

0   0   0   B   B

-   -   -   -   -

-   -   -   -   -

-   -   -   -   -

-   -   -   0   0
            ^

We can now multiply and divide.

0   0   0   B   B

0   0   0   -   -

-   -   -   -   -

-   -   -   -   -

-   -   -   B   B
            ^

Here we introduce 2 important 2D-specific instructions: / and \. These are inclined and declined. With 2D, we can have a degree of 'free will'. Here we are inclined of 1 towards B. towards unary 000

1   B   -   -   -

-   -   0   0   0

-   -   -   -   -

-   -   -   -   -

-   -   -   -   -
                /

With just one instruction, we can 'steal' from the far end of the tape.

With the Fibonacci sequence, we can do,

1   B   1   0   0

B   1   1   1   1

-   -   -   -   -

-   -   -   -   -

1   1   1   -   -
/

The Golden Ratio on tape above, is 1.618 or roughly 1.1001111 in binary. On the lower tape, we have 7 or 111.

 1   B   1   0   0

 B   1   1   1   1

[1   0   1   1   B

 0   1   0   0   B

 1   1   1   1   B] <== Result

 1   1   1   -   -
             /

The result of the multiplication is: 1011.01001111, multiplied using the / and \ operators which act as register shifters, about the decimal point (B) and the lower range of it, 1111, preceeded by a B.

'Free will' determines the number of binary decimal places used based on the height of the y-axis of the tape, or are rows to be added? A trivial example of decision-making, possible in 2D.

Main Blog Page