We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.
Yurt
Yurt is an esolang created by User:ChuckEsoteric08 which is a variation of Minsky machine and Incrementing machine and inspired by the fact that many similar languages to it (See "See also" section) had nested if statements and Yurt was made as a variation without them
Description
Yurt works on a tape with finite amount of unsigned and unbounded cells (but 8 cells are enough, as seen in the proof). Program, which is in an implicit infinite loop, is made out of one-character instructions:
!- increment current cell\- move tape pointer to the right once, if on the last cell it wraps around to the first{...}- if current cell is equal to the next cell do the code in the brackets, else skip it. As noted before it can't be nested
Three-symbol version
Because of the fact that nested ifs aren't possible start and end of a statement can be represented as one character:
|...|
Computational class
Yurt is Turing-complete with the tape of 8 cells, to show that we will provide a proof by translating a variant of Minsky machine called Wheel Minsky Machine (same that was used for Needle's proof) into it:
Wheel Minsky machine
Language has 2 registers: A and B. Programs are inside an infinite loop.
INC x y
Increment x and move y commands forward.
DEC x y
Decrement x (if 0 do nothing) and move y commands forward.
IF x y
If x is 0 move y commands forward, else execute next one.
JMP x
Jumps x commands forward. Halting the program can be simulated by replacing x with the length of a program
Building blocks
We will use some shorthands for each piece of code to shorten our translation:
LEFT = \\\\ \\\
+a = +
-a = \+ LEFT
+b = \\+ LEFT LEFT
-b = \\\+ LEFT LEFT LEFT
+c = \\\\+ LEFT LEFT LEFT LEFT
-c = \\\\\+ LEFT LEFT LEFT LEFT LEFT
+d = \\\\\\+ LEFT LEFT LEFT LEFT LEFT LEFT
-d = \\\\\\\+ LEFT LEFT LEFT LEFT LEFT LEFT LEFT
a( ... ) = { ... }
b( ... ) = \\ { LEFT LEFT ... \\ } LEFT LEFT
c( ... ) = \\\\ { LEFT LEFT LEFT LEFT ... \\\\ } LEFT LEFT LEFT LEFT
d( ... ) = \\\\\\ { LEFT LEFT LEFT LEFT LEFT LEFT ... \\\\\\ } LEFT LEFT LEFT LEFT LEFT LEFT
And also:
[x;y] - command x written y times
WMM to Yurt
After making our building blocks it is trivial to translate each instruction (see note for instrictions at the start of a program):
INC A y:
-c c( +a [+c;y] )
INC B y:
-c c( +b [+c;y] )
DEC A y:
-c c( -a [+c;y] )
DEC B y:
-c c( -b [+c;y] )
IF A y
-c +d +d c( +c -d ) a( -d ) d( [+c;y-1] +d ) -d d( +d ) -d
IF B y
-c +d +d c( +c -d ) b( -d ) d( [+c;y-1] +d ) -d d( +d ) -d
JMP x
-c c( [+c;y] )
Note about the first instruction
As you can see all command translations start with -c but when it is the start of a program it could lead to unwanted results. As such first translated instruction does not have it and after the last command translated -c is put.