From a753c65f2d322cb9c216a5f3d22da067e064f300 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 3 Dec 2025 08:19:08 +0000 Subject: [PATCH] 2025: d03: ex2: add solution --- 2025/d03/ex2/ex2.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100755 2025/d03/ex2/ex2.py diff --git a/2025/d03/ex2/ex2.py b/2025/d03/ex2/ex2.py new file mode 100755 index 0000000..74dfe88 --- /dev/null +++ b/2025/d03/ex2/ex2.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python + +import functools +import sys + + +def solve(input: list[str]) -> int: + def parse(input: list[str]) -> list[list[int]]: + return [[int(c) for c in line] for line in input] + + def max_joltage(bank: list[int]) -> int: + @functools.cache + def recurse(bank: tuple[int, ...], length: int) -> int: + assert length > 0 # Sanity check + assert length <= len(bank) # Sanity check + if length == 1: + return max(bank) + return max( + bank[i] * 10 ** (length - 1) + recurse(bank[i + 1 :], length - 1) + for i in range(len(bank) - length + 1) + ) + + return recurse(tuple(bank), 12) + + batteries = parse(input) + return sum(map(max_joltage, batteries)) + + +def main() -> None: + input = sys.stdin.read().splitlines() + print(solve(input)) + + +if __name__ == "__main__": + main()