From 5757e5fb194600e41d42fa59390a743c1c764d78 Mon Sep 17 00:00:00 2001 From: Maya Herrscher Date: Mon, 23 Dec 2024 19:22:56 +0100 Subject: [PATCH] Inefficient but correct solution for day 22/2 --- 2024/day22/code.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/2024/day22/code.py b/2024/day22/code.py index 38d7321..b81a822 100755 --- a/2024/day22/code.py +++ b/2024/day22/code.py @@ -19,26 +19,30 @@ if __name__ == '__main__': # challenge 1 res1 = 0 changes, values = {}, {} + change_set = set([]) for n in nums: secret = n - changes[n] = [0] * 2000 + changes[n] = [[] for i in range(2000)] values[n] = [0] * 2000 ob = int(str(secret)[-1]) for i in range(2000): secret = prg(secret) bananas = int(str(secret)[-1]) - changes[n][i] = bananas - ob + for j in range(i,min(2000,i+4)): + changes[n][j].append(bananas - ob) values[n][i] = bananas ob = bananas res1 += secret print(f"challenge 1:\n{res1}\n") - # for i, c in enumerate(changes[123][3:10]): - # if c > 0: print(changes[123][i:i+4]) - print(changes[123][:10]) - # challenge 2 + # challenge 2 (could be more efficient i guess) + res2 = 0 + for n in nums: + change_set = change_set.union(set([tuple(c) if c[-1] > 1 else () for c in changes[n]])) + for c in list(change_set): + if c != () and c[-1] > 1 and sum([list(c) in changes[num] for num in nums]) > 100: + res2 = max(sum([values[num][changes[num].index(list(c))] if list(c) in changes[num] else 0 for num in nums]), res2) - res2 = "" print(f"challenge 2:\n{res2}")