43 lines
949 B
Python
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)
|