from collections import Counter from copy import copy from typing import List from aoc import BaseAssignment class Assignment(BaseAssignment): days = 80 def parse_item(self, item: str) -> List[int]: return [ int(i) for i in item.split(',') ] def read_input(self, example = False) -> List[int]: return next(super().read_input(example)) def run(self, input: List[int]) -> int: fish_counter = Counter(input) for _ in range(self.days): labour_fish = fish_counter.get(0, 0) for fish in range(8): fish_counter[fish] = fish_counter[fish + 1] fish_counter[6] += labour_fish fish_counter[8] = labour_fish return fish_counter.total() class AssignmentOne(Assignment): example_result = 5934 class AssignmentTwo(Assignment): example_result = 26984457539 days = 256