Untitled
unknown
python
2 years ago
1.5 kB
6
Indexable
def process_input_file(input_filename): data = {} with open(input_filename, 'r') as fh: for line in fh: (card_num, numbers) = line.strip().split(":") # grab the card number in case we need it later # it uses spaces to align card_num = int(card_num.split(" ")[-1]) (winning_nums, our_nums) = numbers.split("|") winning_nums = [int(n) for n in winning_nums.split(" ") if n != ""] our_nums = [int(n) for n in our_nums.split(" ") if n != ""] data[card_num] = {"winning_numbers": winning_nums, "revealed_numbers": our_nums, "number_of_cards": 1} return data def get_number_of_matches(data): results = {} for (card_num, game_data) in data.items(): matches = 0 for n in game_data["revealed_numbers"]: if n in game_data["winning_numbers"]: matches += 1 # for every n matches, the next n cards get another card added to them for m in range(1, 1 + matches): next_game_num = card_num + m if next_game_num in data: data[next_game_num]["number_of_cards"] += game_data["number_of_cards"] results[card_num] = game_data["number_of_cards"] return results if __name__ == "__main__": data = process_input_file("p4_input.txt") results = get_number_of_matches(data) print(sum(results.values()))
Editor is loading...
Leave a Comment