diff --git a/2019/src/day07.cpp b/2019/src/day07.cpp index 603b222..07bb868 100644 --- a/2019/src/day07.cpp +++ b/2019/src/day07.cpp @@ -1,8 +1,31 @@ #include #include "days.hpp" +#include "utils.hpp" + +namespace { + int simulate(const std::vector& program, const std::vector phases) { + int state = 0; + for (int phase : phases) { + auto copy = program; + auto result = aoc2019::run_intcode(copy, { phase, state }); + state = result.front(); + } + + return state; + } +} void aoc2019::day07_part1(std::istream &input, std::ostream &output) { - output << "Not implemented\n"; + const auto program = aoc2019::read_intcode(input); + std::vector phases{0, 1, 2, 3, 4}; + + int best = 0; + + do { + best = std::max(simulate(program, phases), best); + } while (std::next_permutation(phases.begin(), phases.end())); + + output << best << std::endl; } void aoc2019::day07_part2(std::istream &input, std::ostream &output) { diff --git a/2019/tests/samples/07-1-1.in b/2019/tests/samples/07-1-1.in new file mode 100644 index 0000000..e626457 --- /dev/null +++ b/2019/tests/samples/07-1-1.in @@ -0,0 +1 @@ +3,15,3,16,1002,16,10,16,1,16,15,15,4,15,99,0,0 diff --git a/2019/tests/samples/07-1-1.out b/2019/tests/samples/07-1-1.out new file mode 100644 index 0000000..d977160 --- /dev/null +++ b/2019/tests/samples/07-1-1.out @@ -0,0 +1 @@ +43210 diff --git a/2019/tests/samples/07-1-2.in b/2019/tests/samples/07-1-2.in new file mode 100644 index 0000000..99ab27e --- /dev/null +++ b/2019/tests/samples/07-1-2.in @@ -0,0 +1,2 @@ +3,23,3,24,1002,24,10,24,1002,23,-1,23, +101,5,23,23,1,24,23,23,4,23,99,0,0 diff --git a/2019/tests/samples/07-1-2.out b/2019/tests/samples/07-1-2.out new file mode 100644 index 0000000..67c0579 --- /dev/null +++ b/2019/tests/samples/07-1-2.out @@ -0,0 +1 @@ +54321 diff --git a/2019/tests/samples/07-1-3.in b/2019/tests/samples/07-1-3.in new file mode 100644 index 0000000..6f8a3b2 --- /dev/null +++ b/2019/tests/samples/07-1-3.in @@ -0,0 +1,2 @@ +3,31,3,32,1002,32,10,32,1001,31,-2,31,1007,31,0,33, +1002,33,7,33,1,33,31,31,1,32,31,31,4,31,99,0,0,0 diff --git a/2019/tests/samples/07-1-3.out b/2019/tests/samples/07-1-3.out new file mode 100644 index 0000000..8c1ca06 --- /dev/null +++ b/2019/tests/samples/07-1-3.out @@ -0,0 +1 @@ +65210