Browse Source

Day 2

master
Noëlle Anthony 5 months ago
parent
commit
e013247cf4
3 changed files with 96 additions and 0 deletions
  1. 42
    0
      day02-1.py
  2. 41
    0
      day02-2.py
  3. 13
    0
      helpers/__init__.py

+ 42
- 0
day02-1.py View File

@@ -0,0 +1,42 @@
import re

from helpers import DEBUG, debug, load_input

def split_line(line, character):
return [group.strip() for group in line.split(character)]

def main(red_max, blue_max, green_max):
lines = load_input(day=2)
games = []
for line in lines:
first_split = split_line(line, ":")
game_num = int(re.match(r"Game (\d+)", first_split[0])[1])
line_dict = {
"game": game_num,
"red": 0,
"green": 0,
"blue": 0
}
second_split = split_line(first_split[1], ";")
for group in second_split:
third_split = split_line(group, ",")
for subgroup in third_split:
matches = re.match(r"(\d+) ([a-z]+)", subgroup)
color = matches[2]
number = int(matches[1])
if number > line_dict[color]:
line_dict[color] = number
games.append(line_dict)

matching_games = 0
for game in games:
if game["red"] <= red_max and game["green"] <= green_max and game["blue"] <= blue_max:
matching_games += game["game"]

print(matching_games)




if __name__ == "__main__":
main(red_max=12, blue_max=14, green_max=13)

+ 41
- 0
day02-2.py View File

@@ -0,0 +1,41 @@
import re

from helpers import DEBUG, debug, load_input

def split_line(line, character):
return [group.strip() for group in line.split(character)]

def main(red_max, blue_max, green_max):
lines = load_input(day=2)
games = []
for line in lines:
first_split = split_line(line, ":")
game_num = int(re.match(r"Game (\d+)", first_split[0])[1])
line_dict = {
"game": game_num,
"red": 0,
"green": 0,
"blue": 0
}
second_split = split_line(first_split[1], ";")
for group in second_split:
third_split = split_line(group, ",")
for subgroup in third_split:
matches = re.match(r"(\d+) ([a-z]+)", subgroup)
color = matches[2]
number = int(matches[1])
if number > line_dict[color]:
line_dict[color] = number
games.append(line_dict)

games_power = 0
for game in games:
games_power += (game["red"] * game["blue"] * game["green"])

print(games_power)




if __name__ == "__main__":
main(red_max=12, blue_max=14, green_max=13)

+ 13
- 0
helpers/__init__.py View File

@@ -0,0 +1,13 @@
DEBUG = False

def debug(message, *args, **kwargs):
global DEBUG
if DEBUG:
print(message, *args, **kwargs)

def load_input(day):
day = str(day) if day >= 10 else f"0{day}"
filename = f"day{day}.input"
with open(filename, "r") as file:
input_list = [line.strip() for line in file.readlines()]
return input_list

Loading…
Cancel
Save