You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.3 KiB
47 lines
1.3 KiB
from math import prod
|
|
lines = open('inputs/day2.txt').readlines()
|
|
red_max = 12
|
|
green_max = 13
|
|
blue_max = 14
|
|
|
|
def cubes(lines):
|
|
max_cubes = []
|
|
for line in lines:
|
|
line = line.strip('\n').split(":")
|
|
rounds = line[1].split(";")
|
|
reds = [0]
|
|
greens = [0]
|
|
blues = [0]
|
|
for round in rounds:
|
|
cubes = round.split(",")
|
|
for cube in cubes:
|
|
cube = cube.split(" ")
|
|
_, nr, clr = cube
|
|
if clr == "red":
|
|
reds.append(int(nr))
|
|
elif clr == "green":
|
|
greens.append(int(nr))
|
|
else:
|
|
blues.append(int(nr))
|
|
max_cubes.append([max(reds), max(greens), max(blues)])
|
|
return max_cubes
|
|
|
|
def possible_games(games):
|
|
valid_game_nrs = []
|
|
for idx, game in enumerate(games):
|
|
possible = True
|
|
if game[0] > red_max:
|
|
possible = False
|
|
if game[1] > green_max:
|
|
possible = False
|
|
if game[2] > blue_max:
|
|
possible = False
|
|
if possible:
|
|
valid_game_nrs.append(idx+1)
|
|
return valid_game_nrs
|
|
|
|
def cube_power(games):
|
|
return [prod(x) for x in games]
|
|
|
|
print(f"Solution Part 1: {sum(possible_games(cubes(lines)))}")
|
|
print(f"Solution Part 2: {sum(cube_power(cubes(lines)))}") |