-
- import sys
- #print reduce((lambda x, f: f(x)), [[sys.stdin.read(), '', [0]*536870000, 0, 0]] + [{'>' : (lambda (i,o,c,dr,ir): (i, o, c, dr+1, ir+1)), '<' : (lambda (i,o,c,dr,ir): (i, o, c, dr-1, ir+1)), '+' : (lambda (i,o,c,dr,ir): (i, o, c[:dr]+[c[dr]+1]+c[dr+1:], dr, ir+1)), '-' : (lambda (i,o,c,dr,ir): (i, o, c[:dr]+[c[dr]-1]+c[dr+1:], dr, ir+1)), ',' : (lambda (i,o,c,dr,ir): (i[1:], o, c[:dr]+[ord(i[0])]+c[dr+1:], dr, ir+1)), '.' : (lambda (i,o,c,dr,ir): (i, o+chr(c[dr]), c, dr, ir+1)), '[' : (lambda (i,o,c,dr,ir): (i,o,c,dr,ir)), ']' : (lambda (i,o,c,dr,ir): (i,o,c,dr,ir)),}[instr] for instr in list(sys.argv[1])])[1]
-
-
- # [input, output, memory, memory pointer, instruction pointer, program]
- cp = [sys.stdin.read(), '', [0]*10, 0, 0, sys.argv[1]]
- #cp = [sys.stdin.read(), '', [0]*10, 0, 0, '.+,']
- lang = {'>' : (lambda (i,o,c,dr,ir, p): (i, o, c, dr+1, ir+1, p)),
- '<' : (lambda (i,o,c,dr,ir, p): (i, o, c, dr-1, ir+1, p)),
- '+' : (lambda (i,o,c,dr,ir, p): (i, o, c[:dr]+[c[dr]+1]+c[dr+1:], dr, ir+1, p)),
- '-' : (lambda (i,o,c,dr,ir, p): (i, o, c[:dr]+[c[dr]-1]+c[dr+1:], dr, ir+1, p)),
- ',' : (lambda (i,o,c,dr,ir, p): (len(i) and i[1:], o, c[:dr]+[ord(len(i) and i[0] or u'\x00')]+c[dr+1:], dr, ir+1, p)),
- '.' : (lambda (i,o,c,dr,ir, p): (i, o+chr(c[dr]), c, dr, ir+1, p)),
- '[' : (lambda (i,o,c,dr,ir, p): (i,o,c,dr,ir+1, p)),
- ']' : (lambda (i,o,c,dr,ir, p): (i,o,c,dr,ir+1, (c[dr] and p[:ir]+p[p[:ir].rindex('['):ir]+p[ir:]) or p)),}
-
- while cp[4] < len(cp[5]):
- cp = lang[cp[5][cp[4]]](cp)
- print cp
- print cp[1]
-