diff --git a/day-04/src/part01.py b/day-04/src/part01.py index 6c26291..ca056a0 100644 --- a/day-04/src/part01.py +++ b/day-04/src/part01.py @@ -8,18 +8,41 @@ def debug_print(printname, *args): if DEBUG: print(f"{'DEBUG::'+printname:<{debug_padding}}", *args) +def get_points(match_count): + return 0 if match_count==0 else 2**(match_count-1) + +@dataclass +class Card: + card_no: int = 0 + winning_numbers: set = field(default_factory=set) + my_numbers: list = field(default_factory=list) + + +cards = [] +total_points = 0 print("Parsing Input:") print("") print("===================================\n"); -FILENAME = "/home/icaema/Public/advent-of-code/day-XX/data/p01test.txt" +FILENAME = "/home/icaema/Public/advent-of-code/day-04/data/p01data.txt" f = open(FILENAME, "r") #for line in sys.stdin: for line in f.readlines(): - line = line.strip() + line = line.strip().replace(' ', ' ').replace('Card ', '').replace(' | ', '|') + #card_side + card_number = int(line.split(':')[0]) + [winning_numbers,my_numbers] = line.split(':')[1].split('|') + + winning_numbers = set([int(wn) for wn in winning_numbers.strip().split(' ')]) + my_numbers = [int(mn) for mn in my_numbers.strip().split(' ')] + + total_points += get_points(len([x for x in my_numbers if x in winning_numbers])) + + current_card = Card(card_number, winning_numbers, my_numbers) debug_print("input", line) + debug_print("parsed", current_card) @@ -46,4 +69,4 @@ print("===================================\n"); print("") print(" Answer:") print("===================================\n"); -print("Answer: XXX"); \ No newline at end of file +print(f"Answer: \n{total_points}"); \ No newline at end of file