def test_parts(tty, result): day = Day(9, 1) day.load(typing=int, sep=",") day.input(tty) day.execute_opcode() assert day.result == result
def test_opcode_three_in_2(): day = Day(5, 1) day.load(typing=int, sep=",") day.input(1) day.execute_opcode() assert day.diagnostic == 7692125
def test_given_0(): test = Day(4, 1) test.load([1002, 4, 3, 4, 33], sep=",") test.execute_opcode() print(test.answer(test.data[4])) assert test.result == 99
def test_given_long(monkeypatch, type_in, result): part1 = Day(5, 2) part1.load( [ 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, ], sep=",", ) monkeypatch.setattr("builtins.input", lambda x: type_in) part1.execute_opcode() assert part1.diagnostic == result
def test_opcode_three_in_1(): day = Day(5, 2) day.load(typing=int, sep=",") day.input(5) day.execute_opcode() assert day.diagnostic == 14340395
def test_given_1(): part1 = Day(9, 1) quine = [ 109, 1, 204, -1, 1001, 100, 1, 100, 1008, 100, 16, 101, 1006, 101, 0, 99 ] part1.load(quine.copy()) part1.execute_opcode() assert part1[:len(quine)] == quine
def test_given_1(monkeypatch, data, part1_in, part2_in): part1 = Day(5, 2) part1.load(data, sep=",") monkeypatch.setattr("builtins.input", lambda x: part1_in) part1.execute_opcode() assert part1.diagnostic == 0 part1.reset() monkeypatch.setattr("builtins.input", lambda x: part2_in) part1.execute_opcode() assert part1.diagnostic == 1
def test_given_3(): part1 = Day(9, 1) middle = [104, 1125899906842624, 99] part1.load(middle.copy()) out = part1.execute_opcode() assert middle[1] == part1.result
def test_given(data, index, result): part1_obj = Day(2, 1) part1_obj.load(data) part1_obj.execute_opcode() print(part1_obj.answer(part1_obj.data[index])) assert part1_obj.result == result
def test_given_2(): part1 = Day(9, 1) part1.load([1102, 34915192, 34915192, 7, 4, 7, 99, 0]) part1.execute_opcode() assert len(str(part1.result)) == 16
for i in range(100): for j in range(100): data = part2.data.copy() data[1] = i data[2] = j out = compute(data) if out is None: continue elif out[0] == 19690720: print(i, j) print(part2.answer(100 * i + j)) break obj_part2 = Day(2, 2) obj_part2.load(typing=int, sep=",") for i in range(100): for j in range(100): obj_part2.reset() obj_part2.data[1:3] = [i, j] out = obj_part2.execute_opcode() if out is None: continue elif out[0] == 19690720: print(i, j) print(obj_part2.answer(100 * i + j)) break # out = sum(part2.apply(fuelchain)) # print(part2.desc)
from util import Day if __name__ == "__main__": # Part 1 part1 = Day(5, 1) part1.load(typing=int, sep=",") out = part1.execute_opcode() part1.answer(part1.diagnostic, v=1) # Part 1 part2 = Day(5, 2) part2.load(typing=int, sep=",") out = part2.execute_opcode() part2.answer(part2.diagnostic, v=1)