19_presents.py 512 B

1234567891011121314151617181920212223
  1. #!/usr/bin/env python3
  2. from collections import deque
  3. def steal_left(n):
  4. elves = deque(range(1, n + 1))
  5. while len(elves) > 1:
  6. elves.rotate(-1)
  7. elves.popleft()
  8. return elves.pop()
  9. def steal_opposite(n):
  10. elves = deque(range(1, n + 1))
  11. elves.rotate(-(len(elves) // 2))
  12. skip = len(elves) % 2
  13. while len(elves) > 1:
  14. elves.popleft()
  15. elves.rotate(-skip)
  16. skip = 1 - skip
  17. return elves.pop()
  18. n = 3017957
  19. print(steal_left(n))
  20. print(steal_opposite(n))