diff --git a/days/comp.py b/days/comp.py index a3f171e..5f6a507 100644 --- a/days/comp.py +++ b/days/comp.py @@ -14,6 +14,10 @@ class OpcodeComputer(): https://adventofcode.com/2019/day/5 """ + memory = [] + + def __init__(self, mem: List[int]) -> None: + self.memory = mem def parse_param(self, pc: int, mem: List[int]) \ -> Tuple[int, int, int, int]: @@ -38,7 +42,7 @@ class OpcodeComputer(): pass return (int(i[-2:]), a, b, c) - def process_op(self, mem: List[int]) -> int: + def process_op(self) -> int: """Run program code Args: @@ -48,7 +52,9 @@ class OpcodeComputer(): int: Content in memory at position 0 """ pc: int = 0 + mem = list(self.memory) cmd: int = mem[pc] + while cmd != 99: cmd, a, b, c = self.parse_param(pc, mem) if cmd == 1: diff --git a/days/day2.py b/days/day2.py index ccb5e51..7280505 100644 --- a/days/day2.py +++ b/days/day2.py @@ -12,7 +12,7 @@ class Day2(unittest.TestCase): code: List[int] = [int(k) for k in fp.readline().split(',')] code[1] = 12 code[2] = 2 - self.assertEqual(OpcodeComputer().process_op(code), 5098658) + self.assertEqual(OpcodeComputer(code).process_op(), 5098658) def test_day2b(self): with open(self.inputfile) as fp: @@ -24,7 +24,7 @@ class Day2(unittest.TestCase): code[1] = a code[2] = b - result = OpcodeComputer().process_op(code) + result = OpcodeComputer(code).process_op() if result == 19690720: break self.assertEqual(100 * a + b, 5064) diff --git a/days/day5.py b/days/day5.py index abb3272..37fcfc0 100644 --- a/days/day5.py +++ b/days/day5.py @@ -12,21 +12,21 @@ class Day5(unittest.TestCase): def test_day5a(self): output_val = [] - sut = comp.OpcodeComputer() + sut = comp.OpcodeComputer(self.get_code()) # replace input() and print() to simulate user behavior comp.input = lambda: 1 comp.print = lambda s: output_val.append(s) - sut.process_op(self.get_code()) + sut.process_op() self.assertEqual(int(output_val[-1]), 8332629) def test_day5b(self): output_val = [] - sut = comp.OpcodeComputer() + sut = comp.OpcodeComputer(self.get_code()) # replace input() and print() to simulate user behavior comp.input = lambda: 5 comp.print = lambda s: output_val.append(s) - sut.process_op(self.get_code()) + sut.process_op() self.assertEqual(int(output_val[-1]), 8805067)