12
Jump to navigation
Jump to search
12 isn't 11, 10, etc.. 12 just has 12 commands.
Commands
command | description |
---|---|
+ |
increment |
- |
decrement |
. | output (as number) |
, | output (as ASCII) |
* | multiply by 2 |
^ | square |
/ | divide by 2 |
x | change accumulator to XKCD Random Number |
o | zero accumulator |
g | change accumulator to googol |
n | change accumulator to 99 |
@ | halt |
Interpreter
Python
acc = 0 cmds = input(">") for c in cmds: if c == '+': acc += 1 elif c == '-': acc -= 1 elif c == '*': acc *= 2 elif c == '^': acc **= 2 elif c == '/': acc //= 2 elif c == 'x': acc = 4 elif c == 'o': acc = 0 elif c == 'g': acc = 10**100 elif c == 'n': acc = 99 elif c == '.': print(acc) elif c == ',': print(chr(acc % 256), end='') elif c == '@': break
JS
const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); rl.question('>', (cmds) => { let acc = 0n; let output = ''; for (const c of cmds) { switch (c) { case '+': acc += 1n; break; case '-': acc -= 1n; break; case '*': acc *= 2n; break; case '^': acc **= 2n; break; case '/': acc /= 2n; break; case 'x': acc = 4n; break; case 'o': acc = 0n; break; case 'g': acc = 10n ** 100n; break; case 'n': acc = 99n; break; case '.': output += acc.toString() + '\n'; break; case ',': output += String.fromCharCode(Number(acc % 256n)); break; case '@': break; } if (c === '@') break; } process.stdout.write(output); rl.close(); });
Examples
Hello, World!
+++*^*,n++,+++++++,,+++,o+***-^-----,o+*****,o+***+^++++++,n++++++++++++,+++,n+++++++++,n+,o+*****+,
XKCD Random Number
x.