Esempio n. 1
0
def main():
    vm = Intcode(PROGRAM, [1])
    vm.compute()
    print("day 9/1", vm.outputs)

    vm = Intcode(PROGRAM, [2])
    vm.compute()
    print("day 9/2", vm.outputs)

    test()
Esempio n. 2
0
def main():
    vm = Intcode(PROGRAM, [1])

    vm.compute()
    print("day 5/1", vm.outputs[:-1], vm.outputs[-1])

    vm.reset(inputs=[5])
    vm.compute()
    print("day 5/2", vm.outputs[:-1], vm.outputs[-1])

    test()
Esempio n. 3
0
def test():
    program = [109,1,204,-1,1001,100,1,100,1008,100,16,101,1006,101,0,99]
    vm = Intcode(program)
    vm.compute()
    assert vm.outputs == program

    program = [1102,34915192,34915192,7,4,7,99,0]
    vm = Intcode(program)
    vm.compute()
    assert len(vm.outputs) == 1
    assert len(str(vm.outputs[0])) == 16

    program = [104,1125899906842624,99]
    vm = Intcode(program)
    vm.compute()
    assert vm.outputs == program[1:2]

    vm = Intcode(PROGRAM, [1])
    vm.compute()
    assert vm.outputs == [3601950151]

    vm = Intcode(PROGRAM, [2])
    vm.compute()
    assert vm.outputs == [64236]
Esempio n. 4
0
def test():
    program = [3,0,4,0,99]

    vm = Intcode(program, [123])
    vm.compute()
    assert vm.outputs == [123]

    vm = Intcode(program, ["test"])
    vm.compute()
    assert vm.outputs == ["test"]

    vm = Intcode([1002,4,3,0,99])
    assert vm.compute() == 99 * 3

    vm = Intcode(PROGRAM, [1])
    vm.compute()
    assert all(x == 0 for x in vm.outputs[:-1])
    assert vm.outputs[-1] == 14522484

    vm = Intcode([3,9,8,9,10,9,4,9,99,-1,8])
    for x in range(10):
        vm.reset(inputs=[x])
        vm.compute()
        exp = 1 if x == 8 else 0
        assert [exp] == vm.outputs

    vm = Intcode([3,9,7,9,10,9,4,9,99,-1,8])
    for x in range(10):
        vm.reset(inputs=[x])
        vm.compute()
        exp = 1 if x < 8 else 0
        assert [exp] == vm.outputs

    vm = Intcode([3,3,1108,-1,8,3,4,3,99])
    for x in range(10):
        vm.reset(inputs=[x])
        vm.compute()
        exp = 1 if x == 8 else 0
        assert [exp] == vm.outputs

    vm = Intcode([3,3,1107,-1,8,3,4,3,99])
    for x in range(10):
        vm.reset(inputs=[x])
        vm.compute()
        exp = 1 if x < 8 else 0
        assert [exp] == vm.outputs

    vm = Intcode([3,12,6,12,15,1,13,14,13,4,13,99,-1,0,1,9])
    for x in [-1, 0, 1]:
        vm.reset(inputs=[x])
        vm.compute()
        exp = 0 if x == 0 else 1
        assert [exp] == vm.outputs

    vm = Intcode([3,3,1105,-1,9,1101,0,0,12,4,12,99,1])
    for x in [-1, 0, 1]:
        vm.reset(inputs=[x])
        vm.compute()
        exp = 0 if x == 0 else 1
        assert [exp] == vm.outputs

    program = [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]
    vm = Intcode(program)
    for x, exp in [(7, 999), (8, 1000), (9, 1001)]:
        vm.reset(inputs=[x])
        vm.compute()
        assert [exp] == vm.outputs

    vm = Intcode(PROGRAM, [5])
    vm.compute()
    assert vm.outputs == [4655956]