RCEM

From Esolang
Jump to: navigation, search

Random Code Executation Machine is an esoteric computer language invented in March 2008 by User:Feuermonster. Data is stored on an infinite tape. In addition, there exists a cell (called I-Cell), which can store numbers. Every cell can have one of the following statements:

  • 0 (false)
  • 1 (true)
  • 2 (maybe)

Instructions

  • r* (Moves the pointer * steps to the right.)
  • l* (Moves the pointer * steps to the left.)
  • s* (Set the cell to *. * can be 0,1 or 2)
  • o_ (Prints out the value which is stored at the current cell.)
  • i_ (Reads a value from the input and stores it in the current cell.)
  • x_ (Sets the cell to a random value. (0,1 or 2))
  • ^* (equal to cells[current] = cells[current] xor cells[current + *])
  • +* (equal to cells[current] = cells[current] and cells[current + *])
  • c_ (switches the value from 0 to 1 and from 1 to 0.)
  • ++ (Add 1 to the current cell.)
  • -- (Sub 1 from the current cell.)
  • 2* (If the cell has the value 2. The cell gets a new value *.)
  • m+ (Adds 1 to the I-Cell)
  • m- (Subtracts 1 from the I-Cell)
  • mp (Prints out the I-Cell as a number.)
  • mo (Prints out the I-Cell as character.)
  • mi (Reads a value from the input and stores it in the I-Cell.)
  • m::*::* (Reads a binary value and stores it as a number in the I-Cell. m::0::8 Would read cell 0 till cell 8. See example above.)
  • z::*::* (Reads a number from I-Cell and stores it in the cell * till * as binary.)

If the value of a cell would be >=3. The value will get the value 3 % 3. (n % 3)

Loops

  • ( ... ) The code will be executed, if the current cell has the value 0.
  • { ... } The code will be executed, if the current cell has the value 1.
  • < .... > The code will be executed, if the I-Cell is not 0.
  • / .... \ The code will be executed, if the cell has the value 2.
  • [ ... ] The code will be executed, if Rnd(2) is 1. ( 50% : 50%)

If the value of the current cell is 2, every loop will be executed. (Even if Rnd(2) is 0)

Examples

s2[r1s2] Infinite loop.
s2o_ This will print 2.
x_[r1x_] Random loop.
x_r9([r1][l2]x_) An other random based loop.
r65s1l65(m+r1)mo This will Print 'A'.
s0r1s1r1s0r1s1l3m::0::3mp This will print '5'.
m+m+m+m+m+z::0::2o_r1o_r1o_ This will print '101'.
x_/x_\o_ Prints out '1' or '0'
<m-> Sets the I-Cell to 0.