spacepaste

  1.  
  2. import sys
  3. #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]
  4. # [input, output, memory, memory pointer, instruction pointer, program]
  5. cp = [sys.stdin.read(), '', [0]*10, 0, 0, sys.argv[1]]
  6. #cp = [sys.stdin.read(), '', [0]*10, 0, 0, '.+,']
  7. lang = {'>' : (lambda (i,o,c,dr,ir, p): (i, o, c, dr+1, ir+1, p)),
  8. '<' : (lambda (i,o,c,dr,ir, p): (i, o, c, dr-1, ir+1, p)),
  9. '+' : (lambda (i,o,c,dr,ir, p): (i, o, c[:dr]+[c[dr]+1]+c[dr+1:], dr, ir+1, p)),
  10. '-' : (lambda (i,o,c,dr,ir, p): (i, o, c[:dr]+[c[dr]-1]+c[dr+1:], dr, ir+1, p)),
  11. ',' : (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)),
  12. '.' : (lambda (i,o,c,dr,ir, p): (i, o+chr(c[dr]), c, dr, ir+1, p)),
  13. '[' : (lambda (i,o,c,dr,ir, p): (i,o,c,dr,ir+1, p)),
  14. ']' : (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)),}
  15. while cp[4] < len(cp[5]):
  16. cp = lang[cp[5][cp[4]]](cp)
  17. print cp
  18. print cp[1]
  19.