blob: 7ad60675fe4ffd766735068f3783c04ad0f34f45 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
from utils import open_day
nums, *boards = open_day(4).read().split('\n\n')
nums = list(map(int, nums.split(',')))
boards = [[[(int(n), False) for n in l.split()] for l in b.rstrip().split('\n')] for b in boards]
def win(board):
for y in board:
if all(x[1] for x in y):
return True
for x in range(len(board[0])):
if all(board[y][x][1] for y in range(len(board))):
return True
return False
won = set()
wins = []
for n in nums:
for i, b in enumerate(boards):
tot = 0
for y in range(len(b)):
for x in range(len(b[y])):
if b[y][x][0] == n:
b[y][x] = (b[y][x][0], True)
if b[y][x][1] == False:
tot += b[y][x][0]
if i not in won and win(b):
won.add(i)
wins.append(n * tot)
print(wins[0])
print(wins[-1])
|