-
Notifications
You must be signed in to change notification settings - Fork 0
/
part_one.py
39 lines (28 loc) · 1.27 KB
/
part_one.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import sys
def main(print_output: bool = True):
try:
with open("input.txt") as input_file:
points = 0
for line in input_file:
# Remove the "Card ID: " part
rest_of_line = line.split(": ", 1)[1].removesuffix("\n")
# Divide the line into winning numbers and the card numbers
winning_numbers, card_numbers = rest_of_line.split(" | ")
# Convert the winning numbers and card numbers to sets
winning_numbers = set(winning_numbers.split())
card_numbers = set(card_numbers.split())
# Check how many winning numbers are in the card numbers
matching_numbers = winning_numbers.intersection(card_numbers)
# Add the card points to the total points based on the number of matching numbers
points += 2 ** (len(matching_numbers) - 1) if matching_numbers else 0
if print_output:
print(f"Total points: {points}")
sys.exit(0)
except FileNotFoundError:
print("The file input.txt was not found.")
sys.exit(1)
except Exception as e:
print(f"An error occurred: {e}")
sys.exit(1)
if __name__ == "__main__":
main()