generated from public/aoc_template
48 lines
1.1 KiB
Python
48 lines
1.1 KiB
Python
from tools.aoc import AOCDay
|
|
from typing import Any
|
|
|
|
|
|
class Day(AOCDay):
|
|
inputs = [
|
|
[
|
|
(357, "input3_test"),
|
|
(17109, "input3"),
|
|
],
|
|
[
|
|
(3121910778619, "input3_test"),
|
|
(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)
|