Skip to content

Instantly share code, notes, and snippets.

@qasimy123
Last active December 2, 2023 05:39
Show Gist options
  • Save qasimy123/01e5abe39983946a3dd56f087fb35d29 to your computer and use it in GitHub Desktop.
Save qasimy123/01e5abe39983946a3dd56f087fb35d29 to your computer and use it in GitHub Desktop.
AOC2023-2
from aocd import data, submit
import re
exampleA = """
Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green
Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue
Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red
Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red
Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green
"""
exampleB = """
Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green
Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue
Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red
Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red
Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green
"""
def solutionA(data):
lines = [line.split(";") for line in data.strip().split("\n")]
good = []
for line in lines:
game_id = int(line[0].split(":")[0].split(" ")[1].strip())
line = [line[0].split(":")[1].strip()] + [l.strip() for l in line[1:]]
max_c = {
"red": 0,
"green": 0,
"blue": 0,
}
for t in line:
colors = re.findall(r"\d+ \w+", t)
for color in colors:
num, col = color.split(" ")
max_c[col] = max(max_c[col], int(num))
print(max_c)
if max_c["red"] <= 12 and max_c["green"] <= 13 and max_c["blue"] <= 14:
print(game_id)
good.append(game_id)
return sum(good)
def solutionB(data):
lines = [line.split(";") for line in data.strip().split("\n")]
maxes = []
for line in lines:
line = [line[0].split(":")[1].strip()] + [l.strip() for l in line[1:]]
max_c = {
"red": 0,
"green": 0,
"blue": 0,
}
for t in line:
colors = re.findall(r"\d+ \w+", t)
for color in colors:
num, col = color.split(" ")
max_c[col] = max(max_c[col], int(num))
maxes.append(max_c["red"] * max_c["green"] * max_c["blue"])
return sum(maxes)
# print(solutionA(exampleA))
# print(solutionA(data))
submit(solutionA(data), part="a")
# print(solutionB(exampleB))
# print(solutionB(data))
submit(solutionB(data), part="b")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment