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()
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()
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]
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]