Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.07 KB | None | 0 0
  1. nTrip = 2
  2. steps = 10
  3.  
  4. countTable = [([1]+[0] * nTrip) for j in range(steps+1)]
  5. countTable[0] = [1]*(nTrip+1)
  6. for i in xrange(1, steps+1):
  7. for j in xrange(1, nTrip+1):
  8. s1, s2 = 0, 0
  9. if j > 0:
  10. s1 = countTable[i][j-1]
  11. if i >= 3**(j-1)*2:
  12. s2 = countTable[i-3**(j-1)*2][j]
  13. countTable[i][j] = s1 + s2
  14.  
  15. def calc(t, mult=1):
  16. if mult == 0:
  17. return []
  18. valList = []
  19. for x in xrange(1, 3**t):
  20. if (x*mult) % 3 == 1:
  21. if t == 1:
  22. return [[x]]
  23. for y in calc(t-1, (x*mult-1)/3):
  24. valList.append([x]+y)
  25. return valList
  26.  
  27. def to2Cycle(t):
  28. if len(t) == 0:
  29. return []
  30. for x in xrange(0, 3**(len(t)-1)*2):
  31. if (2**x)%(3**len(t)) == t[0]:
  32. return [x] + to2Cycle(t[1:])
  33. return -1
  34.  
  35. def count(t, m):
  36. if t == []:
  37. return 1
  38. size = len(t)
  39. for x in t:
  40. m -= x
  41. m -= size
  42. return countTable[m-1][size]
  43.  
  44. sum = 1
  45. for x in range(1, nTrip+1):
  46. for pattern in map(to2Cycle, calc(x)):
  47. print pattern
  48. print count(pattern, steps)
  49. sum += count(pattern, steps)
  50. if pattern[0] == 2:
  51. sum -= count(pattern[1:], steps-3)
  52. print sum
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement