# -*- coding: utf-8 -*- from abc import ABC from dataclasses import dataclass from typing import Iterator from aoc import BaseAssignment from aoc.datastructures import Coordinate from aoc.decorators import infinite_generator @dataclass class Block: origin: Coordinate class Assignment(BaseAssignment[int, str], ABC): @infinite_generator def infinite_moves(self, item: str) -> str: return item def infinite_blocks(self): pass class AssignmentOne(Assignment): example_result = 1 def run(self, input: Iterator[str]): i = 0 moves = self.infinite_moves(input) for move in self.infinite_moves(next(input)): i += 1 print(move) if i == 100: break class AssignmentTwo(Assignment): pass