From 90e7bdbdcb03dabbd67459392f854b79aabda561 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Fuglede=20J=C3=B8rgensen?= Date: Sun, 22 Dec 2024 16:20:26 +0100 Subject: [PATCH] Add solution to 2024-12-22 --- 2024/day22/solutions.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 2024/day22/solutions.py diff --git a/2024/day22/solutions.py b/2024/day22/solutions.py new file mode 100644 index 0000000..bfa86c4 --- /dev/null +++ b/2024/day22/solutions.py @@ -0,0 +1,32 @@ +from collections import defaultdict +import numpy as np + +with open("input") as f: + ns = list(map(int, f.read().strip().split("\n"))) + + +def hsh(secret): + for _ in range(2000): + secret ^= secret << 6 & 0xFFFFFF + secret ^= secret >> 5 & 0xFFFFFF + secret ^= secret << 11 & 0xFFFFFF + yield secret + + +secrets = list(map(list, map(hsh, ns))) + +# Part 1 +print(sum(s[-1] for s in secrets)) + +# Part 2 +result = defaultdict(int) +for n in ns: + ss = [s % 10 for s in hsh(n)] + diffs = np.diff(ss) + changes = set() + for i in range(1996): + if (change := tuple(diffs[i : i + 4])) not in changes: + changes.add(change) + result[change] += ss[i + 4] + +print(max(result.values()))