Advertisement
Guest User

Untitled

a guest
Dec 21st, 2020
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.89 KB | None | 0 0
  1. from adventlib import *
  2. from collections import defaultdict, deque
  3. import copy
  4. import re
  5.  
  6. def playrec(p1, p2):
  7. seen = set()
  8.  
  9. while p1 and p2:
  10. kk = str((p1, p2))
  11. if kk in seen:
  12. return True, p1, p2
  13. seen.add(kk)
  14.  
  15. c1 = p1.pop(0)
  16. c2 = p2.pop(0)
  17.  
  18. if len(p1) >= c1 and len(p2) >= c2:
  19. winner, _, _ = playrec(p1[:c1], p2[:c2])
  20. else:
  21. winner = c1 > c2
  22. if winner:
  23. p1 = p1 + [c1, c2]
  24. else:
  25. p2 = p2 + [c2, c1]
  26.  
  27. # true if p1 won
  28. return p1, p1, p2
  29.  
  30. def main(f):
  31. data = linegroups(f)
  32. p1 = [int(v) for v in data[0][1:]]
  33. p2 = [int(v) for v in data[1][1:]]
  34.  
  35. winner, p1, p2 = playrec(p1, p2)
  36. print(winner, p1, p2)
  37. if not winner:
  38. p1 = p2
  39.  
  40. print(sum([(len(p1) - i) * v for i, v in enumerate(p1)]))
  41.  
  42. run_main(main)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement