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.4 KiB

from math import prod
lines = open('inputs/day2.txt').readlines()
red_max = 12
green_max = 13
blue_max = 14
def cubes(lines: list) -> list[int]:
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: list[int]) -> list[int]:
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: list[int]) -> list[int]:
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)))}")