Example #1
0
def run_program(instructions, x, y):
    # print(f'running run_program {x=}, {y=}')
    global provided_x
    provided_x = False
    relative_base = 0
    memory = copy(instructions)
    instruction_pointer = 0

    while memory[instruction_pointer] != 99 and instruction_pointer >= 0:
        instruction = memory[instruction_pointer]
        opcode, param_modes = parse_instruction(instruction)
        params = get_params(memory, instruction_pointer, opcode, param_modes,
                            relative_base)
        instruction_pointer, relative_base = process_instruction(
            opcode,
            params,
            memory,
            instruction_pointer,
            (x, y),
            param_modes,
            relative_base,
        )

    assert instruction_pointer == -1
    # print(f'returning {relative_base=}')
    return relative_base  # i store it here in this output opcode 4 instruction processing
Example #2
0
def run_program(instructions):
    relative_base = 0
    memory = copy(instructions)
    instruction_pointer = 0
    the_outputs = []

    while memory[instruction_pointer] != 99:
        instruction = memory[instruction_pointer]
        opcode, param_modes = parse_instruction(instruction)
        params = get_params(memory, instruction_pointer, opcode, param_modes,
                            relative_base)
        instruction_pointer, relative_base = process_instruction(
            opcode,
            params,
            memory,
            instruction_pointer,
            the_outputs,
            param_modes,
            relative_base,
        )