import math from tools.aoc import AOCDay from tools.types import String from typing import Any class Day(AOCDay): inputs = [ [ (1227775554, "input2_test"), (23039913998, "input2"), ], [ (4174379265, "input2_test"), (35950619148, "input2"), ] ] def parse_input(self) -> list[tuple[int, ...]]: return [tuple(map(int, pair.split("-"))) for pair in self.getInput().split(",")] def solve(self, part2: bool = False) -> int: ans = 0 for low, high in self.parse_input(): for _id in range(low, high + 1): str_id = String(_id) if not part2: if len(set(str_id // 2)) == 1: ans += _id else: for x in range(2, len(str_id) + 1): if len(set(str_id // x)) == 1: ans += _id break return ans def part1(self) -> Any: return self.solve() def part2(self) -> Any: return self.solve(part2=True) if __name__ == '__main__': day = Day(2025, 2) day.run(verbose=True)