Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- table = '[<>,.-+]'
- def numerate(s):
- a=s #a=input().lstrip('[')
- b=a.rstrip(']')
- c,d=0,0
- for e in b:
- d=d*8+'[<>,.-+]'.find(e)
- c+=(d>0!=e=='[')-(c>0!=e>'[')
- return -~d*8**(len(a)-len(b)-c)
- def denumerate(number):
- number -= 1
- oct_encoded = oct(number)[2:]
- if oct_encoded == "0":
- return ""
- program = ""
- for digit in oct_encoded:
- program += table[int(digit)]
- temp = program.rstrip(']')
- outside_loops = len(program) - len(temp)
- program = temp
- unmatched_left = 0
- unmatched_right = 0
- depth = 0
- for op in program:
- if op == '[':
- depth += 1
- if op == ']':
- if not depth:
- unmatched_right += 1
- else:
- depth -= 1
- unmatched_left = depth
- return '[' * (unmatched_right + outside_loops) + program + ']' * (unmatched_left + outside_loops)
- for x in range(1,1000):
- temp = denumerate(x)
- try:
- assert x == numerate(temp)
- except AssertionError:
- print(x, ":", temp)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement