diff options
author | Marvin Borner | 2024-12-22 12:40:44 +0100 |
---|---|---|
committer | Marvin Borner | 2024-12-22 12:40:44 +0100 |
commit | 577a714d557270bdc1d87bdbe8f94b06aca0b8a8 (patch) | |
tree | 06ef011ddb894adb66a95b3bcb141a282a58e294 /2024 | |
parent | 3f614a3bc0088ba727e9251df27a591b0d788da7 (diff) |
k
Diffstat (limited to '2024')
-rwxr-xr-x | 2024/22/solve.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/2024/22/solve.py b/2024/22/solve.py new file mode 100755 index 0000000..f6fe00f --- /dev/null +++ b/2024/22/solve.py @@ -0,0 +1,49 @@ +#!/bin/env python3 + +L = [int(l.strip()) for l in open("input").readlines()] + + +def evolve(n): + n ^= n * 64 + n %= 16777216 + + n ^= n // 32 + n %= 16777216 + + n ^= n * 2048 + n %= 16777216 + + return n + + +def part1(n): + for i in range(2000): + n = evolve(n) + return n + + +def part2(): + M = {} + for n in L: + diffs = [] + vals = [0] + for i in range(2000): + n = evolve(n) + s = n % 10 + diffs.append(s - vals[-1]) + vals.append(s) + + s = set() + for i in range(4, len(vals)): + r = tuple(diffs[i - 4 : i]) + if r not in s: + if r in M: + M[r] += vals[i] + else: + M[r] = vals[i] + s.add(r) + return M[max(M, key=M.get)] + + +print(sum(part1(n) for n in L)) +print(part2()) |