aoc2025/day02.py

51 lines
1.3 KiB
Python

import math
from tools.aoc import AOCDay
from tools.types import String
from typing import Any
class Day(AOCDay):
inputs = [
[
(1227775554, "input2_test"),
(30608905813, "input2_dennis"),
(23039913998, "input2"),
],
[
(4174379265, "input2_test"),
(31898925685, "input2_dennis"),
(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)