Exemple #1
0
def test_part2():
    with open('input.txt') as f:
        instructions = f.readline()

    comp = IntCodeComputer2(instructions, [5])
    comp.execute()
    assert comp.output_data.pop() == 773660
Exemple #2
0
def test_part1():
    with open('input.txt') as f:
        instructions = f.readline()

    comp = IntCodeComputer2(instructions, [1])
    comp.execute()
    *checks, diagnostic_code = comp.output_data
    assert diagnostic_code == 3122865
    assert all([v == 0 for v in checks])
Exemple #3
0
def test_equal_8_complex(comparator):
    instructions = '3,21,1008,21,8,20,1005,20,22,107,8,21,20,1006,20,31,' + \
                   '1106,0,36,98,0,0,1002,21,125,20,4,20,1105,1,46,104,' + \
                   '999,1105,1,46,1101,1000,1,20,4,20,1105,1,46,98,99'
    comp = IntCodeComputer2(instructions, [comparator])
    comp.execute()
    assert len(comp.output_data) == 1
    if comparator < 8:
        expected = 999
    elif comparator == 8:
        expected = 1000
    else:
        expected = 1001
    assert comp.output_data[0] == expected
Exemple #4
0
def optimise_phases(instructions, use_feedback=False):
    best_thrust = 0
    best_phases = None
    if use_feedback:
        possible_phases = range(5, 10)
    else:
        possible_phases = range(5)
    for phases in itertools.permutations(possible_phases):
        current_thrust = 0
        if use_feedback:
            current_thrust = run_feedback_amplifiers(instructions, phases)
        else:
            for phase in phases:
                comp = IntCodeComputer2(instructions, [phase, current_thrust])
                comp.execute()
                assert len(comp.output_data) == 1
                current_thrust = comp.output_data[0]
        if current_thrust > best_thrust:
            best_thrust = current_thrust
            best_phases = tuple(phases)
    return best_thrust, best_phases
Exemple #5
0
def test_1(input_, output):
    comp = IntCodeComputer2(input_)
    comp.execute()
    test_output = ','.join([str(v) for v in comp.instructions])
    assert test_output == output
Exemple #6
0
def test_equal_zero_im(comparator):
    instructions = '3,3,1105,-1,9,1101,0,0,12,4,12,99,1'
    comp = IntCodeComputer2(instructions, [comparator])
    comp.execute()
    assert len(comp.output_data) == 1
    assert comp.output_data[0] == int(comparator != 0)
Exemple #7
0
def test_equal_zero_pos(comparator):
    instructions = '3,12,6,12,15,1,13,14,13,4,13,99,-1,0,1,9'
    comp = IntCodeComputer2(instructions, [comparator])
    comp.execute()
    assert len(comp.output_data) == 1
    assert comp.output_data[0] == int(comparator != 0)
Exemple #8
0
def test_less_8_im(comparator):
    instructions = '3,3,1107,-1,8,3,4,3,99'
    comp = IntCodeComputer2(instructions, [comparator])
    comp.execute()
    assert len(comp.output_data) == 1
    assert comp.output_data[0] == int(comparator < 8)
Exemple #9
0
def test_less_8_pos(comparator):
    instructions = '3,9,7,9,10,9,4,9,99,-1,8'
    comp = IntCodeComputer2(instructions, [comparator])
    comp.execute()
    assert len(comp.output_data) == 1
    assert comp.output_data[0] == int(comparator < 8)