Solutions to Advent of Code 2023 (Day 2)
Part 1
def getIdIfValid(row):
game, results = row.split(":")
id = game.split(" ")[1]
sets = results.strip().split("; ")
allowed = {"red": 12, "green": 13, "blue": 14}
for cube_set in sets:
pulls = cube_set.split(", ")
for pull in pulls:
count, color = pull.split(" ")
if int(count) > allowed[color]:
return 0
return int(id)
if __name__ == "__main__":
with open("day_02.in") as f:
data = f.read().strip().splitlines()
total = 0
for row in range(len(data)):
total += getIdIfValid(data[row])
print(total)
•
•
•
Part 2
def minNumberOfCubes(row):
results = row.split(":")[1]
sets = results.strip().split("; ")
counter = {"red": 0, "green": 0, "blue": 0}
for cube_set in sets:
pulls = cube_set.split(", ")
for pull in pulls:
count, color = pull.split(" ")
counter[color] = max(counter[color], int(count))
return counter
if __name__ == "__main__":
with open("day_02.in") as f:
data = f.read().strip().splitlines()
total = 0
for row in range(len(data)):
mul = 1
mins = minNumberOfCubes(data[row])
for v in mins.values():
mul *= v
total += mul
print(total)