RCEM

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
Infinite loop. This will print 2. Random loop. An other random based loop. This will Print 'A'. This will print '5'. This will print '101'. Prints out '1' or '0' Sets the I-Cell to 0.