CONTAIN
Jump to navigation
Jump to search
CONTAIN is an esolang about boxes that contain numbers.
Instructions
Programs end when all containers get deleted. Boxes: [number] - Create container at this character position with default number set. [] - Init container to 0 "text" - Create sequential containers with Unicode values (used cleverly in some example programs to cut down on space, see programs with "_golf" postfixes) Box Pointer Movement: Box Pointer movement triggers all queued operations. > - Move BP to next container (by creation order) < - Move BP to previous container $ - Save current BP position & - Load saved BP position Instruction Pointer (IP) Control: ( - Save current IP position ) - Load saved IP position x - Skip next ) or & if current box = 0 Binary Operations (use current & next containers): Next container in this case refers to the container that you end up on after BP movement (can be same as current!) + - Add - - Subtract * - Multiply / - Divide (deletes container if divide by zero) = - Set current = next @ - Swap current and next Unary Operations: ! - Print current as number ? - Print current as ASCII ^ - Create new container: position = current+1, val=0 Input: : - Input number to current container ; - Input ASCII to current container Special: # - Comment everything after it out Anything else - NOP
Example Programs
Hello World
[]"Hello, World!">(?/&>)
Factorial
[1][][1]>:<(*>-><x<)!(/>@<)
Truth machine
[]:!$/&(!)
Fibonacci sequence
[][1](+>!@<)
Interpreters
There is currently only one interpreter: https://github.com/QuantumV2/CONTAIN