(players: int, rounds: int)
| 3 | from collections import defaultdict, deque |
| 4 | |
| 5 | def play(players: int, rounds: int) -> int: |
| 6 | marbles, scores = deque([0]), defaultdict[int,int](int) |
| 7 | for i in range(1, rounds+1): |
| 8 | if i % 23 == 0: |
| 9 | marbles.rotate(7) |
| 10 | scores[i % players] += i + marbles.pop() |
| 11 | marbles.rotate(-1) |
| 12 | else: |
| 13 | marbles.rotate(-1) |
| 14 | marbles.append(i) |
| 15 | return max(scores.values()) |
| 16 | |
| 17 | @aoc.main('09') |
| 18 | def main(indata: str) -> tuple[int,int]: |