fork download
  1. def f(s):
  2. a=s.lstrip('[')
  3. b,c,d=a.rstrip(']'),0,''
  4. for e in b:d+=str('[<>,.-+]'.find(e));c+=(e=='[')-(e>'[')*(c>0)
  5. return int('0'+d+(len(a)-len(b)-c)*'7',8)+1
  6.  
  7. def g(s):
  8. a=s.strip('[')
  9. b=a.rstrip(']')
  10. c=d=0
  11. for e in b:d=d*8+'[<>,.-+]'.find(e);c+=(e=='[')-(c>0!=e>'[')
  12. return -~d*8**(len(a)-len(b)-c)
  13.  
  14. def enumerate(n):
  15. if n==0: return ['']
  16.  
  17. a=[]
  18.  
  19. for c in '+-<>,.':
  20. for x in enumerate(n-1):
  21. a+=[c+x]
  22.  
  23. for i in range(n-1):
  24. for x in enumerate(i):
  25. for y in enumerate(n-2-i):
  26. a+=['['+x+']'+y]
  27.  
  28. return a
  29.  
  30. def verify():
  31. i=1
  32.  
  33. for n in range(7):
  34. for x in enumerate(n):
  35. if f(x)!=g(x):
  36. print i,f(x),g(x)
  37. 1/0
  38. i+=1
  39. print 'n=%d done'%n
  40.  
  41. print 'ok'
  42.  
  43. verify()
Success #stdin #stdout 1.47s 9120KB
stdin
Standard input is empty
stdout
n=0 done
n=1 done
n=2 done
n=3 done
n=4 done
n=5 done
n=6 done
ok