Tom Weber 1 year ago
parent eaebcb736a
commit df072761d9

@ -0,0 +1,36 @@
lines = open('inputs/day4.txt').readlines()
def ticket_numbers(line: str) -> tuple:
line = line.split("|")
winning = [int(x) for x in line[0].replace(" ", " ").split(":")[1].strip().split(" ")]
ticket = [int(x) for x in line[1].replace(" ", " ").strip().split(" ")]
return winning, ticket
def wins2score(wins: list[int]) -> int:
total = 0
for win in wins:
if win > 0:
total += 2 ** (win-1)
return total
def count_wins(lines: list[str]) -> int:
scores = []
for line in lines:
winning, ticket = ticket_numbers(line)
wins = 0
for nr in winning:
if nr in ticket:
wins += 1
scores.append(wins)
return scores
def count_total_cards(wins: list[int]) -> int:
copies = [1 for x in wins]
for i in range(len(wins)):
win = wins[i]
for w in range(win):
copies[i+w+1] += copies[i]
return copies
print(f'Solution Part 1: {wins2score(count_wins(lines))}')
print(f'Solution Part 2: {sum(count_total_cards(count_wins(lines)))}')
Loading…
Cancel
Save