Beispiel #1
0
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())
Beispiel #2
0
def amplifier(in_pipe, out_pipe, args):
    vm.Parser(file, vm.Machine(in_pipe, out_pipe, args)).parse()
Beispiel #3
0
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()
Beispiel #4
0
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],
Beispiel #5
0
        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()