diff --git a/2/cubes.py b/2/cubes.py new file mode 100644 index 0000000..c191abb --- /dev/null +++ b/2/cubes.py @@ -0,0 +1,41 @@ +from aocd.models import Puzzle +from aocd import submit + +def valid_games(games:list) -> list: + """ + Solve part a. + - check which of the games are possible with the follwing limitations: + - 12 red + - 13 green + - 14 blue + - add up their IDs + """ + rules = {"red":12, "green":13, "blue":14} + + valid_ids = [] + for i, game in enumerate(games.split("\n"), start=1): + throws = game.split(":")[1].split(";") + valid = True + for throw in throws: + cubes = throw.split(",") + for cube in cubes: + _, amount, color = cube.split(" ") + if int(amount) > rules[color]: + valid = False + if valid: + valid_ids.append(i) + return valid_ids + +if __name__ == "__main__": + # get puzzle and parse data + puzzle = Puzzle(year=2023, day=2) + + # part a: + answer_a = sum(valid_games(puzzle.input_data)) + print(f"{answer_a}") + submit(answer_a, part="a", day=2, year=2023) + + # part b: + #answer_b = 0 + #print(f"{answer_b}") + #submit(answer_b, part="b", day=2, year=2023)