Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- from collections import deque
- def cat_jump(s):
- return tuple([(k > 0 and s[k-1]) or (k<n-1 and s[k+1]) for k in range(n)])
- n = 10
- START = (True,)*n
- END = (False,)*n
- seen = {START: None} # sit : (prev, action)
- sits = deque([(START, None)]) # (sit, prev)
- while sits and END not in seen:
- s, prev = sits.popleft()
- for k in range(n):
- s2 = list(s)
- s2[k] = False
- s2 = cat_jump(s2)
- if not s2 in seen:
- seen[s2] = (s, k)
- sits.append((s2, s))
- s = END
- actions = []
- while seen[s] is not None:
- s, a = seen[s]
- actions.append(a+1)
- print(f'{len(actions)} actions')
- print(*actions[::-1])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement