Advertisement
Guest User

Untitled

a guest
Aug 27th, 2015
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.07 KB | None | 0 0
  1. table = '[<>,.-+]'
  2. def numerate(s):
  3. a=s #a=input().lstrip('[')
  4. b=a.rstrip(']')
  5. c,d=0,0
  6. for e in b:
  7. d=d*8+'[<>,.-+]'.find(e)
  8. c+=(d>0!=e=='[')-(c>0!=e>'[')
  9. return -~d*8**(len(a)-len(b)-c)
  10.  
  11. def denumerate(number):
  12. number -= 1
  13. oct_encoded = oct(number)[2:]
  14. if oct_encoded == "0":
  15. return ""
  16. program = ""
  17. for digit in oct_encoded:
  18. program += table[int(digit)]
  19. temp = program.rstrip(']')
  20. outside_loops = len(program) - len(temp)
  21. program = temp
  22. unmatched_left = 0
  23. unmatched_right = 0
  24. depth = 0
  25. for op in program:
  26. if op == '[':
  27. depth += 1
  28. if op == ']':
  29. if not depth:
  30. unmatched_right += 1
  31. else:
  32. depth -= 1
  33. unmatched_left = depth
  34. return '[' * (unmatched_right + outside_loops) + program + ']' * (unmatched_left + outside_loops)
  35.  
  36. for x in range(1,1000):
  37. temp = denumerate(x)
  38. try:
  39. assert x == numerate(temp)
  40. except AssertionError:
  41. print(x, ":", temp)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement