61 lines
1.4 KiB
Python
Raw Permalink Normal View History

2021-12-04 10:31:45 +01:00
#!/usr/bin/env python
def check_number(number, bingo):
for n, line in enumerate(bingo):
try:
x = line.index(number)
line[x] = -1
# check row
t = [i for i in line if i >= 0]
if len(t) == 0:
return bingo
# check col
t = [j[x] for j in bingo if j[x] >= 0]
if len(t) == 0:
return bingo
except ValueError:
continue
return None
def bingo_number(bingo):
result = 0
for l in bingo:
tmp = sum([i for i in l if i >= 0])
result += tmp
return result
numbers = None
bingo = []
with open("input01.txt", "r") as f:
line = f.readline()
numbers = [int(i) for i in line.split(',')]
tmp = []
for line in f:
line = line.strip()
if len(line) == 0:
if len(tmp) == 0:
continue
bingo.append(tmp)
tmp = []
continue
tmp.append([int(i) for i in line.split(" ") if len(i)>0])
if len(tmp):
bingo.append(tmp)
winners = []
for n in numbers:
winner = None
for b in bingo:
winner = check_number(n, b)
if winner is not None:
winners.append(winner)
bingo = [b for b in bingo if b not in winners]
if len(bingo) == 0:
score = bingo_number(winner)
print(score*n)
break