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.
Dranoer
Dranoer (Draw but not erase) is an esolang by User:ChuckEsoteric08.
Description
It uses a binary tape unbounded in both directions. Program runs in an implicit loop, it has these instructions:
1- Set current cell to 1. If the cell is already 1 do nothing>- Move tape pointer to the right<- Move tape pointer to the left{- If current cell is 0 jump to matching}(- If current cell is 1 jump to matching)},)- NOPs, only used as targets for if statements
Optional I/O commands:
*- input an ASCII character and store it as a binary in the current cell and the next 7 cells (whether big or little endian depends on implementation)!- output current cell as well as the next 7 cells as an ASCII character
Computational class
Dranoer is Turing-complete. One way to do this is by simulating binary Turing machine without ability to set 1 to 0 (which is still Turing-complete for the same reason as brainfuck minus - and Wang program without erase instruction). After the cell there would be a group of binary strings of equal lengths, with a single bit being 1 which repressents the statee, with tape pointer pointing at the start of one of these grpups. A cell with the value B thus looks like that (with three states as an example):
[1][B] [1][0][0] [0][1][0] [0][0][1]
That cell with the value 1 here is only needed to show that it is initialized. Program starts with initialization:
( init )
It initializes all cells like it is shown above and then pointer is moved to the initial state after the current cell. Then it checks what current state is:
>>>{
state transition, moves to three cells after the start of the group representing the next state
}<<<
State transition first needs to move pointer to B and check if it a is correct value. If state transition moves the pointer it should check if cell left of B is 0, and if it is then it should be initialized. As seen in the proof (...) is used only a few times so it is possible to remove it, though it makes the program larger.
See also
- Unfrozen Pointer - can be seen as a subset of Dranoer
- MFJZ