32 lines
769 B
Python
Executable File
32 lines
769 B
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
from useful import *
|
|
|
|
ls = lines(open(0))
|
|
|
|
# {'1': [{'red': 2, ...}, ...]}
|
|
|
|
def balls_from_grab(g):
|
|
return {nn[1]: int(nn[0]) for nn in [b.split() for b in g.split(', ')]}
|
|
|
|
def round(l):
|
|
_, right = l.split(': ')
|
|
grabs = right.split('; ')
|
|
return [balls_from_grab(g) for g in grabs]
|
|
|
|
rounds = {i+1: round(s) for i, s in enumerate(ls)}
|
|
|
|
def win_condition(g):
|
|
return (g.get('red', 0) <= 12 and
|
|
g.get('green', 0) <= 13 and
|
|
g.get('blue', 0) <= 14)
|
|
|
|
def power(r):
|
|
return reduce(int.__mul__,
|
|
[max(g.get(c, 0) for g in r) for c in ('red', 'green', 'blue')])
|
|
|
|
print(sum(
|
|
k for k, v in rounds.items() if all(win_condition(g) for g in v)))
|
|
print(sum(
|
|
power(v) for k, v in rounds.items()))
|