From 0e2c9f2d27380f087ded0b3eb02dc2e83436237f Mon Sep 17 00:00:00 2001 From: fettlaus <_Ox46K:26i?> Date: Sat, 7 Dec 2019 11:35:37 +0100 Subject: [PATCH] OpcodeComputer input/output now uses lists --- days/comp.py | 16 ++++------------ days/day5.py | 18 ++++++------------ 2 files changed, 10 insertions(+), 24 deletions(-) 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)