59 lines
1.3 KiB
Python
59 lines
1.3 KiB
Python
![]() |
#!/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)
|
||
|
|
||
|
winner = None
|
||
|
for n in numbers:
|
||
|
for b in bingo:
|
||
|
winner = check_number(n, b)
|
||
|
if winner is not None:
|
||
|
break
|
||
|
if winner is not None:
|
||
|
score = bingo_number(winner)
|
||
|
print(score*n)
|
||
|
break
|