summaryrefslogtreecommitdiffstats
path: root/4.py
diff options
context:
space:
mode:
Diffstat (limited to '4.py')
-rw-r--r--4.py13
1 files changed, 8 insertions, 5 deletions
diff --git a/4.py b/4.py
index ed2f13c..f2c3063 100644
--- a/4.py
+++ b/4.py
@@ -34,16 +34,19 @@ class Board:
return Board([[int(n) for n in l.split()] for l in s.split('\n')])
def solve(nums: list[int], boards: list[Board]) -> tuple[int, int]:
+ indices: set[int] = { i for i in range(len(boards)) }
wins: list[int] = []
num: int
for num in nums:
i: int
board: Board
- for i, board in enumerate(boards):
- if board.has_bingo: continue
- board.call(num)
- if board.has_bingo:
- wins.append(num * board.unmarked_sum)
+ winners: set[int] = set()
+ for i in indices:
+ boards[i].call(num)
+ if boards[i].has_bingo:
+ wins.append(num * boards[i].unmarked_sum)
+ winners.add(i)
+ indices.difference_update(winners)
return wins[0], wins[-1]
nums: str | list[int]