import sys import curses import time import termcolor from collections import defaultdict, namedtuple import aoc import matplotlib.pyplot as plt def inp_decode(x): return list(map(int, x.split(","))) inp = aoc.get_input(inp_decode) _logger = aoc.get_logger() opcode = namedtuple("opcode", ["name", "parameter"]) opcodes = { 1: opcode(name="add", parameter="iio"), 2: opcode(name="mul", parameter="iio"), 3: opcode(name="inp", parameter="o"), 4: opcode(name="out", parameter="i"), 5: opcode(name="jit", parameter="ii"), 6: opcode(name="jif", parameter="ii"), 7: opcode(name="lt ", parameter="iio"), 8: opcode(name="eq ", parameter="iio"), 9: opcode(name="arb", parameter="i"), 99: opcode(name="hlt", parameter=""), }
import aoc from collections import Counter def inpfct(x): return list(map(int, list(x))) inp = aoc.get_input(inpfct) _logger = aoc.get_logger(__name__) width = 25 height = 6 n = width * height layers = [inp[i:i + n] for i in range(0, len(inp), n)] if aoc.part_one(): _logger.info('%s Layers found (size: %s x %s)', len(layers), width, height) clayers = sorted(list(map(Counter, layers)), key=lambda x: x[0]) print(clayers[0][1] * clayers[0][2]) if aoc.part_two(): print() cnt = 0 layer = [2] * n for l in layers: for i, y in enumerate(l): if layer[i] == 2: layer[i] = y for y in range(0, height):