from typing import Any, Iterator from ..base import BaseSolver class Solver(BaseSolver): def solve(self, input: str) -> Iterator[Any]: lines = [line.strip() for line in input.splitlines()] cycle, x = 1, 1 values = {cycle: x} for line in lines: cycle += 1 if line == "noop": pass else: r = int(line.split()[1]) values[cycle] = x cycle += 1 x += r values[cycle] = x answer_1 = sum(c * values[c] for c in range(20, max(values.keys()) + 1, 40)) yield answer_1 yield ( "\n" + "\n".join( "".join( "#" if j >= (v := values[1 + i * 40 + j]) - 1 and j <= v + 1 else "." for j in range(40) ) for i in range(6) ) + "\n" )