From a1ef62cd44e5b5a54d92d7ccf559b14874e7c8f8 Mon Sep 17 00:00:00 2001 From: Bert Peters Date: Mon, 9 Dec 2019 18:33:34 +0100 Subject: [PATCH] Reuse IntCodeComputer for part 1. --- 2019/src/day07.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/2019/src/day07.cpp b/2019/src/day07.cpp index b638c0d..cc57b1e 100644 --- a/2019/src/day07.cpp +++ b/2019/src/day07.cpp @@ -7,12 +7,14 @@ namespace { using aoc2019::IntCodeComputer; - int simulate(const std::vector &program, const std::array &phases) { - int state = 0; - for (int phase : phases) { - auto copy = program; - auto result = aoc2019::run_intcode(copy, {phase, state}); - state = result.front(); + std::int64_t simulate(const std::vector &program, const std::array &phases) { + std::int64_t state = 0; + for (auto phase : phases) { + std::deque outputs; + IntCodeComputer computer{program, {phase, state}}; + computer.connectOutput(outputs); + computer.run(); + state = outputs.front(); } return state; @@ -41,10 +43,10 @@ namespace { } void aoc2019::day07_part1(std::istream &input, std::ostream &output) { - const auto program = aoc2019::read_intcode(input); - std::array phases{0, 1, 2, 3, 4}; + const auto program = aoc2019::IntCodeComputer::read_intcode(input); + std::array phases{0, 1, 2, 3, 4}; - int best = 0; + std::int64_t best = 0; do { best = std::max(simulate(program, phases), best);