Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from adventlib import *
- from collections import defaultdict, deque
- import copy
- import re
- def playrec(p1, p2):
- seen = set()
- while p1 and p2:
- kk = str((p1, p2))
- if kk in seen:
- return True, p1, p2
- seen.add(kk)
- c1 = p1.pop(0)
- c2 = p2.pop(0)
- if len(p1) >= c1 and len(p2) >= c2:
- winner, _, _ = playrec(p1[:c1], p2[:c2])
- else:
- winner = c1 > c2
- if winner:
- p1 = p1 + [c1, c2]
- else:
- p2 = p2 + [c2, c1]
- # true if p1 won
- return p1, p1, p2
- def main(f):
- data = linegroups(f)
- p1 = [int(v) for v in data[0][1:]]
- p2 = [int(v) for v in data[1][1:]]
- winner, p1, p2 = playrec(p1, p2)
- print(winner, p1, p2)
- if not winner:
- p1 = p2
- print(sum([(len(p1) - i) * v for i, v in enumerate(p1)]))
- run_main(main)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement