Day 04
This commit is contained in:
32
day04/part2.py
Normal file
32
day04/part2.py
Normal file
@@ -0,0 +1,32 @@
|
||||
#!/usr/bin/env python3
|
||||
from collections import defaultdict
|
||||
|
||||
lines = [x.strip() for x in open("input.txt")]
|
||||
inp = map(int, lines[0].split(","))
|
||||
boards = defaultdict(list)
|
||||
remaining = defaultdict(set)
|
||||
|
||||
for i in range((len(lines)-1) // 6):
|
||||
sub = list(map(lambda x: list(map(int, x.split())), lines[i*6+2:i*6+7]))
|
||||
for j in range(5):
|
||||
boards[i].append(set(sub[j]))
|
||||
boards[i].append(set([row[j] for row in sub]))
|
||||
board_items = set()
|
||||
for row in sub:
|
||||
board_items.update(row)
|
||||
remaining[i] = board_items
|
||||
|
||||
wins = set()
|
||||
for draw in inp:
|
||||
for key, board in boards.items():
|
||||
if key in wins:
|
||||
continue
|
||||
remaining[key].discard(draw)
|
||||
for line in board:
|
||||
line.discard(draw)
|
||||
if len(line) == 0:
|
||||
wins.add(key)
|
||||
if len(wins) == 100:
|
||||
print(draw * sum(remaining[key]))
|
||||
exit(0)
|
||||
break
|
||||
Reference in New Issue
Block a user