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)