Skip to content

Instantly share code, notes, and snippets.

@eiais
Last active July 3, 2017 04:25
Show Gist options
  • Save eiais/b4fec79beb5791847b618a8bc3284d4a to your computer and use it in GitHub Desktop.
Save eiais/b4fec79beb5791847b618a8bc3284d4a to your computer and use it in GitHub Desktop.
def setup():
index = 0
vals = []
for i in range(256):
vals.append(0)
program = raw_input('enter your brainfuck program: ')
parens = match_parens(program)
interpret(vals,index,parens,program)
def interpret(vals,index,parens,program):
i = 0
ivparens = {v: k for k, v in parens.items()}
while i < len(program):
if program[i] == '>':
index=index+1
elif program[i] == '<':
index=index-1
elif program[i] == '+':
vals[index]=vals[index]+1
elif program[i] == '-':
vals[index]=vals[index]-1
elif program[i] == '[':
if vals[index] == 0:
i = parens[i]
elif program[i] == ']':
if vals[index] != 0:
i = ivparens[i]
elif program[i] == '.':
print chr(vals[index])
elif program[i] == ',':
vals[index] = ord(raw_input()[0])
i=i+1
def match_parens(program):
stack = []
parens = {}
for i in range(len(program)):
if program[i] == '[':
stack.append(i)
if program[i] == ']':
parens.update({stack.pop(): i})
return parens
setup()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment