from tools.aoc import AOCDay from typing import Any class Day(AOCDay): inputs = [ [ (357, "input3_test"), (17311, "input3_dennis"), (17109, "input3"), ], [ (3121910778619, "input3_test"), (171419245422055, "input3_dennis"), (169347417057382, "input3"), ] ] def solve(self, turn_on_count: int) -> int: ans = 0 for line in self.getInput(): nums = list(map(int, line)) digits = [] min_index = 0 for i in range(turn_on_count): if i < turn_on_count - 1: this_digit = max(nums[min_index:-(turn_on_count-1-i)]) else: this_digit = max(nums[min_index:]) digits.append(this_digit) min_index = nums[min_index:].index(this_digit) + min_index + 1 ans += int("".join(map(str, digits))) return ans def part1(self) -> Any: return self.solve(2) def part2(self) -> Any: return self.solve(12) if __name__ == '__main__': day = Day(2025, 3) day.run(verbose=True)