Skip to content

Instantly share code, notes, and snippets.

@eldondev
Created October 16, 2013 14:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eldondev/7008443 to your computer and use it in GitHub Desktop.
Save eldondev/7008443 to your computer and use it in GitHub Desktop.
morning pre-coffee kata
registers = {
'pointer' : 0,
'ip' : 0,
}
space = [0]*30000
program =[]
import sys
def inc_p():
registers['pointer'] += 1
def dec_p():
registers['pointer'] -= 1
def inc_v():
space[registers['pointer']] += 1
def dec_v():
space[registers['pointer']] -= 1
def out():
sys.stdout.write(chr(space[registers['pointer']]))
sys.stdout.flush()
def inp():
space[registers['pointer']] = ord(sys.stdin.read(1))
def jump_zero():
if space[registers['pointer']] == 0:
while not program[registers['ip']] == "]":
registers['ip'] += 1
def loop():
while not program[registers['ip']] == "[":
registers['ip'] -= 1
registers['ip'] -= 1
instr = {
'>' : inc_p,
'<' : dec_p,
'+' : inc_v,
'-' : dec_v,
'.' : out,
',' : inp,
'[' : jump_zero,
']' :loop
}
program = open(sys.argv[1]).read().strip()
while registers['ip'] < len(program) :
if program[registers['ip']] in instr:
instr[program[registers['ip']]]()
registers['ip'] += 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment