aoc2016/day15.py
2024-12-30 12:12:54 +01:00

43 lines
949 B
Python

from tools.aoc import AOCDay
from typing import Any
def solve(disks: list[tuple[int, int, int]]) -> int:
time = 0
while not all((time + disk_id + cur_pos) % num_pos == 0 for disk_id, num_pos, cur_pos in disks):
time += 1
return time
class Day(AOCDay):
inputs = [
[
(5, "input15_test"),
(376777, "input15"),
],
[
(3903937, "input15"),
]
]
def parse_input(self) -> list[tuple[int, int, int]]:
disks = []
for disk in self.getIntsFromInput():
disks.append((disk[0], disk[1], disk[3]))
return disks
def part1(self) -> Any:
disks = self.parse_input()
return solve(disks)
def part2(self) -> Any:
disks = self.parse_input()
disks = disks + [(len(disks) + 1, 11, 0)]
return solve(disks)
if __name__ == '__main__':
day = Day(2016, 15)
day.run(verbose=True)