From e7c152d9645d4bb5bc15efa381073dac0deba365 Mon Sep 17 00:00:00 2001 From: kwout Date: Mon, 4 Dec 2023 11:55:17 -0500 Subject: [PATCH] 2023 day 4 part 2 solved --- 2023/4.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/2023/4.py b/2023/4.py index 887cc49..6871ab9 100644 --- a/2023/4.py +++ b/2023/4.py @@ -1,12 +1,19 @@ -lines = [(int(m[0][-1]), [[int(o) for o in n.split(" ") if o!= ""] for n in m[1].split(" | ")]) for m in [l.split(": ") for l in open("input.txt", "r").read().splitlines()]] +lines = [[int(m[0][-1]), 1, [[int(o) for o in n.split(" ") if o!= ""] for n in m[1].split(" | ")]] for m in [l.split(": ") for l in open("input.txt", "r").read().splitlines()]] +#structure: [[id, #ofcopies, [[winning numbers], [card numbers]]]] summa = 0 -for l in lines: - hits = len(set(l[1][0]).intersection(l[1][1])) +for i in range(len(lines)): + hits = len(set(lines[i][2][0]).intersection(lines[i][2][1])) summa += pow(2, hits-1) if hits > 0 else 0 + for j in range(hits): + lines[i+j+1][1] += lines[i][1] + + +summa2 = sum([l[1] for l in lines]) print(summa) +print(summa2) #cursed one line solution to part 1 #print(sum([int(pow(2, len(set(l[1][0]).intersection(l[1][1]))-1)) for l in [(int(m[0][-1]), [[int(o) for o in n.split(" ") if o!= ""] for n in m[1].split(" | ")]) for m in [l.split(": ") for l in open("input.txt", "r").read().splitlines()]]])) \ No newline at end of file