This is my first esoteric language, which I decided to call L00P. These are the specs: - L00P programs operate on a pointer (p) to an array of ARRAYSIZE 16-bit signed ints (a) which are set to 0 before the program is started (ARRAYSIZE == 8192 in this implementation). - There is an implicit loop around each L00P program (hence the name) which can only be left with the '&' instruction. - Comments start with "//" and go to the end of the current line. - The memory array is circular. - Whitespace is ignored. - Non-instruction-characters outside a comment are stripped away. Instructions: , . input/output a[p] as character < > p-- / p++ - + a[p]-- / a[p]++ (These instructions have been borrowed from the Brainf*** language) ; : input/output a[p] in decimal notation. 0 a[p] = 0 * a[p] *= 2 _ a[p] = - a[p] # p = p + a[p] @ a[p] = a[p + a[p]] $ a[p + a[p]] = a[p] & terminate program S A = sign (A) (code1 | code2) if a[p] code1 else code2 [code1 | code2] syntactic sugar for (code2 | code1) - Note that the "else" branches ("| code2") are optional. Examples: [;>+**+*](<:[&]->:) // Input positive number n , count down from n to zero [;>;>--@>--@>+](<<<<[>>:&|>[>>:&|<->->>>]] // Input positive numbers x and y, print min(x,y) [+**+*>-@+**+>;>-@S+[<_>]-<<](>[:<<.&]>+[<<.>>]-<:-<<.>) // Input any number n, count up/down from n to zero