diff options
-rw-r--r-- | src/2019/day5/aoc.cpp | 2 | ||||
-rw-r--r-- | src/2019/day5/aoc.h | 1 | ||||
-rw-r--r-- | src/2019/day7/aoc.cpp | 25 | ||||
-rw-r--r-- | src/2019/day7/aoc.h | 2 | ||||
-rw-r--r-- | test/test_2019.cpp | 12 |
5 files changed, 29 insertions, 13 deletions
diff --git a/src/2019/day5/aoc.cpp b/src/2019/day5/aoc.cpp index 0913e40..d9c3cd0 100644 --- a/src/2019/day5/aoc.cpp +++ b/src/2019/day5/aoc.cpp @@ -112,6 +112,8 @@ int run_computer(std::vector<int> codes) { return outputs[outputs.size() - 1]; } +void run_computer(std::vector<int> codes, std::vector<int>& outputs) { run(0, codes, outputs); } + std::pair<int, int> day5(line_view file) { const char* p = file.line; std::vector<int> optcodes; diff --git a/src/2019/day5/aoc.h b/src/2019/day5/aoc.h index e226eb3..e92cd2e 100644 --- a/src/2019/day5/aoc.h +++ b/src/2019/day5/aoc.h @@ -7,5 +7,6 @@ namespace aoc2019 { void set_computer(int* i); int run_computer(std::vector<int> codes); +void run_computer(std::vector<int> codes, std::vector<int>&); std::pair<int, int> day5(line_view); } diff --git a/src/2019/day7/aoc.cpp b/src/2019/day7/aoc.cpp index 176683a..d654a0c 100644 --- a/src/2019/day7/aoc.cpp +++ b/src/2019/day7/aoc.cpp @@ -1,5 +1,6 @@ #include "aoc.h" #include "../day5/aoc.h" +#include <algorithm> #include <set> namespace aoc2019 { @@ -45,10 +46,7 @@ static void get_number(const char** pp, int* d) { *pp = p; } -int day7(line_view file) { - int max{INT32_MIN}; - int is[10] = {0}; - std::set<int> ns; +std::pair<int, int> day7(line_view file) { std::vector<int> codes; const char* p = file.line; while (p < file.line + file.length) { @@ -59,7 +57,22 @@ int day7(line_view file) { } p++; } - find_max(is, 0, ns, &max, codes); - return max; + int m1{INT32_MIN}; + int is1[10] = {0}; + std::set<int> ns1; + find_max(is1, 0, ns1, &m1, codes); + + for (int i : {5, 6, 7, 8, 9}) { + int is2[10] = {0}; + is2[0] = i; + is2[1] = 33; + set_computer(is2); + std::vector<int> outputs; + run_computer(codes, outputs); + std::for_each(outputs.begin(), outputs.end(), [](int x) { printf("%d ", x); }); + printf("\n"); + } + + return {m1, 0}; } } // namespace aoc2019 diff --git a/src/2019/day7/aoc.h b/src/2019/day7/aoc.h index de34fe8..206e60c 100644 --- a/src/2019/day7/aoc.h +++ b/src/2019/day7/aoc.h @@ -3,5 +3,5 @@ namespace aoc2019 { -int day7(line_view); +std::pair<int, int> day7(line_view); } diff --git a/test/test_2019.cpp b/test/test_2019.cpp index 4cb9aff..ef6c31e 100644 --- a/test/test_2019.cpp +++ b/test/test_2019.cpp @@ -51,10 +51,10 @@ TEST_CASE("Universal Orbit Map", "[2019]") { TEST_CASE("Amplification Circuit", "[2019]") { line_view lv = load_file("../src/2019/day7/input"); - REQUIRE(272368 == aoc2019::day7(lv)); - // clang-format off - // REQUIRE(43210 == aoc2019::day7(line_view{"3,15,3,16,1002,16,10,16,1,16,15,15,4,15,99,0,0"})); - // REQUIRE(54321 == aoc2019::day7(line_view{"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"})); - // REQUIRE(65210 == aoc2019::day7(line_view{"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"})); - // clang-format on + auto p = aoc2019::day7(lv); + // REQUIRE(272368 == p.first); + // REQUIRE(0 == p.second); + // auto p = aoc2019::day7("3,26,1001,26,-4,26,3,27,1002,27,2,27,1,27,26,27,4,27,1001,28,-1,28,1005,28,6,99,0,0,5"); + // auto p = aoc2019::day7("3,52,1001,52,-5,52,3,53,1,52,56,54,1007,54,5,55,1005,55,26,1001,54,-5,54,1105,1,12,1,53,54,53,1008,54,0,55,1001,55,1,55,2,53,55,53,4,53,1001,56,-1,56,1005,56,6,99,0,0,0,0,10"); + REQUIRE(0 == p.second); } |