diff options
-rwxr-xr-x | 2024/11/solve.py | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/2024/11/solve.py b/2024/11/solve.py new file mode 100755 index 0000000..55cc50d --- /dev/null +++ b/2024/11/solve.py @@ -0,0 +1,34 @@ +#!/bin/env python + +stones = [int(d) for d in open("input").read().strip().split(" ")] + +cache = {} + + +def solve(n, stone): + if n == 0: + return 1 + + if (n, stone) in cache: + return cache[(n, stone)] + + sstone = str(stone) + if stone == 0: + res = solve(n - 1, 1) + elif len(sstone) % 2 == 0: + left = solve(n - 1, int(sstone[: len(sstone) // 2])) + right = solve(n - 1, int(sstone[len(sstone) // 2 :])) + res = left + right + else: + res = solve(n - 1, stone * 2024) + + cache[(n, stone)] = res + return res + + +part1 = 0 +part2 = 0 +for stone in stones: + part1 += solve(25, stone) + part2 += solve(75, stone) +print(part1, part2) |