mirror of
https://github.com/bertptrs/adventofcode.git
synced 2025-12-26 21:30:31 +01:00
Reuse IntCodeComputer for part 1.
This commit is contained in:
@@ -7,12 +7,14 @@
|
|||||||
namespace {
|
namespace {
|
||||||
using aoc2019::IntCodeComputer;
|
using aoc2019::IntCodeComputer;
|
||||||
|
|
||||||
int simulate(const std::vector<int> &program, const std::array<int, 5> &phases) {
|
std::int64_t simulate(const std::vector<std::int64_t> &program, const std::array<std::int64_t, 5> &phases) {
|
||||||
int state = 0;
|
std::int64_t state = 0;
|
||||||
for (int phase : phases) {
|
for (auto phase : phases) {
|
||||||
auto copy = program;
|
std::deque<std::int64_t> outputs;
|
||||||
auto result = aoc2019::run_intcode(copy, {phase, state});
|
IntCodeComputer computer{program, {phase, state}};
|
||||||
state = result.front();
|
computer.connectOutput(outputs);
|
||||||
|
computer.run();
|
||||||
|
state = outputs.front();
|
||||||
}
|
}
|
||||||
|
|
||||||
return state;
|
return state;
|
||||||
@@ -41,10 +43,10 @@ namespace {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void aoc2019::day07_part1(std::istream &input, std::ostream &output) {
|
void aoc2019::day07_part1(std::istream &input, std::ostream &output) {
|
||||||
const auto program = aoc2019::read_intcode(input);
|
const auto program = aoc2019::IntCodeComputer::read_intcode(input);
|
||||||
std::array<int, 5> phases{0, 1, 2, 3, 4};
|
std::array<std::int64_t, 5> phases{0, 1, 2, 3, 4};
|
||||||
|
|
||||||
int best = 0;
|
std::int64_t best = 0;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
best = std::max(simulate(program, phases), best);
|
best = std::max(simulate(program, phases), best);
|
||||||
|
|||||||
Reference in New Issue
Block a user