Esempio n. 1
0
 def run_two(self, inputs):
     intcode_a = Intcode(self.code[:], [inputs[0], 0], name='A')
     intcode_b = Intcode(self.code[:], [inputs[1]], name='B')
     intcode_c = Intcode(self.code[:], [inputs[2]], name='C')
     intcode_d = Intcode(self.code[:], [inputs[3]], name='D')
     intcode_e = Intcode(self.code[:], [inputs[4]], name='E')
     while intcode_a.is_running() and intcode_b.is_running(
     ) and intcode_c.is_running() and intcode_a.is_running(
     ) and intcode_d.is_running() and intcode_e.is_running():
         intcode_a.run()
         if intcode_b.is_running() and len(intcode_a.outputs) > 0:
             intcode_b.inputs += intcode_a.outputs
             intcode_a.outputs = []
         intcode_b.run()
         if intcode_c.is_running() and len(intcode_b.outputs) > 0:
             intcode_c.inputs += intcode_b.outputs
             intcode_b.outputs = []
         intcode_c.run()
         if intcode_d.is_running() and len(intcode_c.outputs) > 0:
             intcode_d.inputs += intcode_c.outputs
             intcode_c.outputs = []
         intcode_d.run()
         if intcode_e.is_running() and len(intcode_d.outputs) > 0:
             intcode_e.inputs += intcode_d.outputs
             intcode_d.outputs = []
         intcode_e.run()
         if intcode_a.is_running() and len(intcode_e.outputs) > 0:
             intcode_a.inputs += intcode_e.outputs
             intcode_e.outputs = []
     return intcode_e.outputs[0]
Esempio n. 2
0
with open('inputs/day13.in') as f:
    data = f.read().strip()

bx, by = 0, 0
px, py = 0, 0
comp = Intcode(data, [])
comp.codes[0] = 2
score = 0
while not comp.halted:
    comp.run()

    for i in range(0, len(comp.outputs), 3):
        x, y, tile = comp.outputs[i:i + 3]
        if tile > 4:
            score = tile
        elif tile == 4:
            bx, by = x, y
        elif tile == 3:
            px, py = x, y

    comp.outputs = []
    if bx > px:
        joystick = 1
    elif bx < px:
        joystick = -1
    else:
        joystick = 0
    comp.inputs.append(joystick)

print(score)