Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.34 KB | None | 0 0
  1. import collections
  2. def bf(s,lim=5000):
  3. s = filter(lambda x: x in "+-<>[].,",s)
  4. try:
  5. jmps = {}
  6. st = []
  7. for i,c in enumerate(s):
  8. if c == '[':
  9. st.append(i)
  10. elif c == ']':
  11. i2 = st.pop()
  12. jmps[i] = i2
  13. jmps[i2] = i
  14. if len(st) != 0:
  15. return "!mail Failure fix pls: " + s
  16. except:
  17. return "!mail Techman it broken"
  18. l = len(s)
  19. ip = 0
  20. mem = collections.defaultdict(int)
  21. mp = 0
  22. out = ""
  23. for _ in xrange(lim):
  24. if ip >= l: break
  25. if s[ip] == '+': mem[mp] += 1
  26. elif s[ip] == '-': mem[mp] -= 1
  27. elif s[ip] == '<': mp -= 1
  28. elif s[ip] == '>': mp += 1
  29. elif s[ip] == '.': out += chr(mem[mp] & 255)
  30. elif s[ip] == ',': return out + "[I can't read chars in, sorry!]"
  31. elif s[ip] == ']': ip = jmps[ip] - 1
  32. elif mem[mp] <= 0: ip = jmps[ip]
  33. mem[mp] &= 255
  34. ip += 1
  35. return ">" + out.strip()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement