diff --git a/days/comp.py b/days/comp.py index 5f6a507..29576f3 100644 --- a/days/comp.py +++ b/days/comp.py @@ -1,4 +1,4 @@ -from typing import List, Tuple +from typing import List, Tuple, Any class OpcodeComputer(): @@ -42,7 +42,7 @@ class OpcodeComputer(): pass return (int(i[-2:]), a, b, c) - def process_op(self) -> int: + def process_op(self, inp: List[int] = [], outp: List[Any] = []) -> int: """Run program code Args: @@ -64,10 +64,10 @@ class OpcodeComputer(): mem[mem[pc+3]] = a * b pc += 4 elif cmd == 3: - mem[mem[pc+1]] = int(input()) + mem[mem[pc+1]] = int(inp.pop(0)) pc += 2 elif cmd == 4: - print(str(a)) + outp.append(str(a)) pc += 2 elif cmd == 5: pc = b if a != 0 else pc + 3 @@ -81,11 +81,3 @@ class OpcodeComputer(): pc += 4 cmd = mem[pc] return mem[0] - - -def input() -> str: - return input() - - -def print(text: str): - print(text) diff --git a/days/day5.py b/days/day5.py index 37fcfc0..885bd66 100644 --- a/days/day5.py +++ b/days/day5.py @@ -10,23 +10,17 @@ class Day5(unittest.TestCase): return [int(k) for k in fp.readline().split(',')] def test_day5a(self): - output_val = [] + outp = [] 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.assertEqual(int(output_val[-1]), 8332629) + sut.process_op([1], outp) + self.assertEqual(int(outp[-1]), 8332629) def test_day5b(self): - output_val = [] + outp = [] 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.assertEqual(int(output_val[-1]), 8805067) + sut.process_op([5], outp) + self.assertEqual(int(outp[-1]), 8805067)