Ratsize

From Esolang
Jump to navigation Jump to search

Ratsize is a queue-based 2D esoteric programming language created by User:Zero player rodent.

Details

In Ratsize, the IP starts in the bottom right of the program, (index [-1][-1] on the 2D array of commands) and moves upward. The IP cannot freely move left, right, or down, but it can branch off onto different paths. Ratsize uses a single queue for memory. The queue stores unbounded negative or positive integers.

Commands

Command Outcome
~ Enqueue the following integer with value 0-9.
} Enqueue the value in queue.
{ Dequeue.
+ Increment the value in queue.
- Decrement the value in queue.
Y Branch left if value in the front of the queue is 0, else branch right.
y Branch left if value in the rear of the queue is 0, else branch right.
v Jump to last ^ the IP pointed to.
! Output integer in queue.
* Output ASCII character associated with integer in queue.
= Enqueue byte of input. If there is no input, enqueue 0.
P Output queue.
_ Terminate program.

Computational class

Ratsize is Turing complete, because you can translate any minimized Brainpocalypse program into it. To translate a minimized Brainpocalypse program to Ratsize, first you must enqueue 256 zeroes. Directly after initializing the queue, insert a ^ after it. Then change each Brainpocalypse command into its Ratsize equivalent.

Minimized Brainpocalypse command Corresponding Ratsize code
}
+
{
}
-
v -
 Y

(Note that you must place all following code after a - equivalent in the path that branches right.)

Example program

Truth-machine

  v
  !
  ^
  + _
   Y
 _ -
 ! |
  Y
  | v
  | {
  | }
  | -
  | -
  - -
  - -
  - -
  - -
  - -
  - -
  - -
  - -
  { {
  } }
   Y
   -
   ^
   +
   +
   +
   +
   +
   {
   }
   0
   ~
   =

External Resources

Interpreter on Try It Online (Crystal)