Exemple #1
0
class EHPR():
    def __init__(self, program):
        self.painted = defaultdict(int)
        self.position = Position(0,0)
        self.direction = Direction.Up
        self.computer = IntcodeComputer(program, [], "Emergency Hull Painting Robot", 0)

    def set_start_color(self, color):
        self.painted[self.position] = color

    def move(self, command):
        new_direction = (Direction(((self.direction.value + 1) % 4)) if command
                            else Direction(((self.direction.value - 1) % 4)))
        new_position = Position(*(sum(x) for x in zip(self.position, movement[new_direction])))
        self.direction = new_direction
        self.position = new_position

    def paint_square(self, color):
        self.painted[self.position] = color

    def execute_step(self):
        self.computer.add_input(self.painted[self.position])
        self.computer.run_program()
        output = self.computer.get_output()
        color, command = output[-2:]
        self.paint_square(color)
        self.move(command)
Exemple #2
0
class FlyingDrone():
    def __init__(self, program):
        self.current_position = Position(0, 0)
        self.computer = IntcodeComputer(program, list(Position(0, 0)),
                                        "SpaceDroneNavigation")

    def navigate_to_pos(self, position):
        self.computer.add_prog_input(list(position))
        self.computer.run_program()
        output = self.computer.get_output()
        self.current_position = position
        return output[0]
Exemple #3
0

def to_ascii_instruction(instruction):
    ascii_instr = []
    for char in instruction:
        ascii_instr.append(ord(char))
    return ascii_instr


def print_output(intcode_instruction):
    str = ''
    for digit in intcode_instruction:
        str = str + chr(digit)
    print(str)


adventure = IntcodeComputer(input_prog, [], "Cryostasis")
adventure.run_program()
output = adventure.get_output()
print_output(output)

while not adventure.has_stopped():
    get_input = input(">")
    input_instruction = to_ascii_instruction(get_input + "\n")
    adventure.add_prog_input(input_instruction)
    adventure.run_program()
    output = adventure.get_output()
    print_output(output)

print("Game Over.")
Exemple #4
0
    input_list = data.split(',')
input_prog = list(map(int, input_list))

instruction = """NOT C J
OR D T
AND T J
NOT A T
OR T J
WALK
"""

ascii_instr = to_ascii_instruction(instruction)

springdroid = IntcodeComputer(input_prog, ascii_instr, "Spring Droid Machine")
springdroid.run_program()
last_moments = springdroid.get_output()
#draw_last_moments(last_moments)
print("Silver: %i" % last_moments[-1])

### PART 2
print("\n PART 2 START \n")

instruction = """NOT C J
NOT A T
OR T J
NOT B T
OR T J
NOT D T
NOT T T
AND T J
AND E T
Exemple #5
0
    input_list = data.split(',')
input_prog = list(map(int, input_list))

### PART 1
intcode_network = dict()
for i in range(50):
    computer = IntcodeComputer(input_prog, [i], "Network Address %i" % i)
    intcode_network[i] = computer

run_network = True

while run_network:
    for id, computer in intcode_network.items():
        print("Run computer %i" % id)
        computer.run_program()
        output = computer.get_output()
        print(output)
        if output:
            if output[0] == 255:
                run_network = False
                print("Silver: %i" % output[2])
                break
            chunk_size = 3
            for i in range(0, len(output), chunk_size):
                instruction = output[i:i + chunk_size]
                intcode_network[instruction[0]].add_prog_input(instruction[1:])


### PART 2
class NAT():
    def __init__(self):