Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import collections
- def bf(s,lim=5000):
- s = filter(lambda x: x in "+-<>[].,",s)
- try:
- jmps = {}
- st = []
- for i,c in enumerate(s):
- if c == '[':
- st.append(i)
- elif c == ']':
- i2 = st.pop()
- jmps[i] = i2
- jmps[i2] = i
- if len(st) != 0:
- return "!mail Failure fix pls: " + s
- except:
- return "!mail Techman it broken"
- l = len(s)
- ip = 0
- mem = collections.defaultdict(int)
- mp = 0
- out = ""
- for _ in xrange(lim):
- if ip >= l: break
- if s[ip] == '+': mem[mp] += 1
- elif s[ip] == '-': mem[mp] -= 1
- elif s[ip] == '<': mp -= 1
- elif s[ip] == '>': mp += 1
- elif s[ip] == '.': out += chr(mem[mp] & 255)
- elif s[ip] == ',': return out + "[I can't read chars in, sorry!]"
- elif s[ip] == ']': ip = jmps[ip] - 1
- elif mem[mp] <= 0: ip = jmps[ip]
- mem[mp] &= 255
- ip += 1
- return ">" + out.strip()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement