|
1234567891011121314151617181920 |
- A, *B = open(0).read().split('\n\n')
- calls = [int(n) for n in A.split(',')]
- boards = [[[int(n) for n in ln.split()] for ln in b.splitlines()] for b in B]
-
- win_scores = []
- for n in calls:
- pending = []
- for board in boards:
- board[:] = [[None if m == n else m for m in row] for row in board]
- win_rows = any(all(n is None for n in row) for row in board)
- win_cols = any(all(n is None for n in col) for col in zip(*board))
- if win_cols or win_rows:
- total = sum(sum(n for n in row if n is not None) for row in board)
- win_scores.append(total * n)
- else:
- pending.append(board)
- boards = pending
-
- print(win_scores[0])
- print(win_scores[-1])
|