From 4dcc750416e3725ef000cda835e671c17036675a Mon Sep 17 00:00:00 2001 From: Sijmen Date: Tue, 5 Dec 2023 14:19:16 +0100 Subject: [PATCH] Further optimise day 4 --- day04.py | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/day04.py b/day04.py index 4c4c5cd..34ce9c6 100644 --- a/day04.py +++ b/day04.py @@ -1,24 +1,27 @@ import fileinput -# -# Part 1 -# -cards = [] -part1 = 0 -for i, line in enumerate(fileinput.input()): - card = line.rstrip().split(": ")[1] - (winning, owned) = ({int(i) for i in h.split()} for h in card.split(" | ")) - count = len(winning & owned) - cards.append(count) - part1 += 1 << count - 1 if count else 0 +def main(): + # + # Part 1 + # + cards = [] + part1 = 0 + for line in fileinput.input(): + card = line.split(": ", 1)[1] + (winning, owned) = ({int(i) for i in h.split()} for h in card.split(" | ", 1)) + count = len(winning & owned) + cards.append(count) + part1 += 1 << count - 1 if count else 0 -# -# Part 2 -# -dp = [0] * len(cards) -part2 = 0 -for i in range(len(cards)): - dp[i] = 1 + sum(dp[i - cards[-i - 1] : i]) - part2 += dp[i] + # + # Part 2 + # + dp = [0] * len(cards) + part2 = 0 + for i in range(len(cards)): + dp[i] = 1 + sum(dp[i - cards[-i - 1] : i]) + part2 += dp[i] -print(part1, part2) + print(part1, part2) + +main()