advent-of-code/day-04/src/part01.py

72 lines
1.6 KiB
Python

import sys
from dataclasses import dataclass, field
DEBUG = True
debug_padding = 24
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-04/data/p01data.txt"
f = open(FILENAME, "r")
#for line in sys.stdin:
for line in f.readlines():
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)
print("")
print(" Proccessing:")
print("===================================\n");
# Insert Processing Code
print("")
print(" Calculate Answer:")
print("===================================\n");
print("")
print(" Answer:")
print("===================================\n");
print(f"Answer: \n{total_points}");