diff --git a/day11/sol.py b/day11/sol.py index f189ff9..3284bff 100644 --- a/day11/sol.py +++ b/day11/sol.py @@ -16,6 +16,31 @@ def solve(file): nums = new print(len(nums)) +def solve2(file): + nums = file.read().split() + + print(sum(evolve(n, 25) for n in nums)) + print(sum(evolve(n, 75) for n in nums)) + +book = {} +def evolve(n, t): + if t == 0: + return 1 + elif (n,t) in book: + return book[n,t] + else: + if n == '0': + x = evolve('1', t-1) + elif len(n)%2 == 0: + x = evolve(n[:len(n)//2], t-1) + x += evolve(n[len(n)//2:].lstrip('0') or '0', t-1) + else: + x = evolve(str(int(n)*2024), t-1) + book[n,t] = x + return x + from io import StringIO -solve(StringIO("0 1 10 99 999")) -solve(open("input")) +#solve(StringIO("0 1 10 99 999")) +solve2(StringIO("0 1 10 99 999")) +#solve(open("input")) +solve2(open("input"))