import vm from pipes import Pipe p = vm.Parser('day9.txt') program = p.parse() pipe = Pipe() m1 = vm.Machine(program.copy(), pipe, pipe, [1]) m2 = vm.Machine(program.copy(), pipe, pipe, [2]) m1.execute() print("Day 9 part 1:", pipe.inspect()) m2.execute() print("Day 9 part 2:", pipe.inspect())
def amplifier(in_pipe, out_pipe, args): vm.Parser(file, vm.Machine(in_pipe, out_pipe, args)).parse()
import vm, threading from pipes import ConcurrentPipe, Pipe program = vm.Parser('day13.txt').parse() in_pipe = ConcurrentPipe() out_pipe = ConcurrentPipe() status = Pipe() tile_set = {0: '.', 1: '#', 2: '@', 3: '-', 4: 'o'} def run(program, in_pipe, out_pipe, status): brain = vm.Machine(program, in_pipe, out_pipe, status, []) brain.execute() def draw(tiles, width, height): for y in range(height): for x in range(width): if (x, y) in tiles.keys(): print(tile_set[tiles[(x, y)]], end='') else: print('.', end='') print() print("score: {0}".format(tiles[(-1, 0)])) def initialize(tiles, width, height, pipe): count = 0 while count != (width * height): x = out_pipe.get_input()
from pipes import Pipe from functools import reduce from itertools import permutations import vm, threading def amplifier(in_pipe, out_pipe, args): vm.Parser(file, vm.Machine(in_pipe, out_pipe, args)).parse() file = 'day7.txt' outputs = [] perms = permutations([0, 1, 2, 3, 4]) pipes = [Pipe() for _ in range(5)] for perm in perms: vm.Parser(file, vm.Machine(pipes[0], pipes[1], [0, perm[0]])).parse() vm.Parser(file, vm.Machine(pipes[1], pipes[2], [perm[1]])).parse() vm.Parser(file, vm.Machine(pipes[2], pipes[3], [perm[2]])).parse() vm.Parser(file, vm.Machine(pipes[3], pipes[4], [perm[3]])).parse() vm.Parser(file, vm.Machine(pipes[4], pipes[0], [perm[4]])).parse() outputs.append(pipes[0].get_input()) print("Day 7 Part 1: ", reduce(max, outputs, 0)) perms = permutations([5, 6, 7, 8, 9]) outputs = [] for perm in perms: a0 = threading.Thread(target=amplifier, args=( pipes[0], pipes[1],
if (x, y) in hull.keys(): in_pipe.set_output(hull[(x, y)]) else: in_pipe.set_output(0) thread.join() return hull def run(program, in_pipe, out_pipe): brain = vm.Machine(program, in_pipe, out_pipe, []) brain.execute() p = vm.Parser('day11.txt') program = p.parse() in_pipe = ConcurrentPipe() out_pipe = ConcurrentPipe() brain = threading.Thread(target=run, args=(program.copy(), in_pipe, out_pipe)) hull = robot_paint(in_pipe, out_pipe, brain, 0) print("Day 11 Part 1:", len(hull.keys())) in_pipe.get_input() brain = threading.Thread(target=run, args=(program.copy(), in_pipe, out_pipe)) hull = robot_paint(in_pipe, out_pipe, brain, 1) positions = hull.keys()