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)