Esempio n. 1
0
#BlueyNeilo 2019
#AoC Q.7a
#Refactored

from intcode import Intcode, parse_file
from itertools import permutations

AMPS = 5

ic = Intcode(parse_file("input.txt"))
perms = list(permutations(range(AMPS)))     #Permutations of [0..AMPS-1]
max_out = 0                                 #Maximum output signal

for p in perms:
    last_out = 0
    for i in range(AMPS):
        ic.reset()
        ic.sim_input([p[i], last_out])
        last_out = ic.execute_yield().pop()

    max_out = max(max_out, last_out)

print(max_out)
Esempio n. 2
0
        for i in range(current_loc[0] - local_render, current_loc[0] +
                       local_render + 1):  #range(minx,maxx+1):
            if (i, j) == current_loc:
                lines += d[current_dir]
            else:
                if (i, j) in panels:
                    lines += c[panels[i, j]]
                else:
                    lines += c[0]
        lines += "\n"
    print(lines)


#Main logic
while not ic.halted:
    ic.sim_input([current_col])
    unwrap = ic.execute_yield(outputs=2)
    if unwrap:
        [paint_col, new_turn] = unwrap

        panels[current_loc] = paint_col
        current_dir = (current_dir + turn[new_turn]) % 4
        current_loc = tuple(
            [sum(x) for x in zip(current_loc, dir[current_dir])])

        current_col = 0
        if current_loc in panels:
            current_col = panels[current_loc]

draw_panels(panels, current_loc, current_dir)
print(len(panels))