generated from public/aoc_template
49 lines
1.2 KiB
Python
49 lines
1.2 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"),
|
|
(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)
|