Example #1
0
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=""),
}

Example #2
0
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):