Advent_of_Code_2023_Intermate/Questions/Day 4.py

58 lines
1.6 KiB
Python

from utils import load_data
def question_1(data):
sum = 0
for line in data:
pipe_split = line.split("|")
found_numbers = pipe_split[1].split(" ")
# This removes empty chars
found_numbers = set(list(filter(("").__ne__, found_numbers)))
winning_numbers = pipe_split[0].split(":")[1].split(" ")
# Idem
winning_numbers = set(list(filter(("").__ne__, winning_numbers)))
intersection = found_numbers.intersection(winning_numbers)
score = 2 ** (len(intersection) - 1) if len(intersection) > 0 else 0
sum += score
print(f"Answer to question 1 is: {sum}")
def question_2(data: list[str]):
sum = 0
# Make a dict with all card IDs set to 1
cards = {}
for line in data:
id = line[5:8].replace(" ","")
cards[int(id)] = 1
for key in cards:
line = data[key-1]
pipe_split = line.split("|")
found_numbers = pipe_split[1].split(" ")
# This removes empty chars
found_numbers = set(list(filter(("").__ne__, found_numbers)))
winning_numbers = pipe_split[0].split(":")[1].split(" ")
# Idem
winning_numbers = set(list(filter(("").__ne__, winning_numbers)))
intersection = found_numbers.intersection(winning_numbers)
for index in range(len(intersection)):
cards[key + index + 1] += cards[key]
sum += cards[key]
print(f"Answer to question 2 is: {sum}")
if __name__ == "__main__":
filepath = "Data/Day4.txt"
data = load_data(filepath)
# question_1(data)
question_2(data)