aboutsummaryrefslogtreecommitdiff
path: root/src/2019/day2/aoc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/2019/day2/aoc.cpp')
-rw-r--r--src/2019/day2/aoc.cpp25
1 files changed, 20 insertions, 5 deletions
diff --git a/src/2019/day2/aoc.cpp b/src/2019/day2/aoc.cpp
index 7707191..7f9eb0a 100644
--- a/src/2019/day2/aoc.cpp
+++ b/src/2019/day2/aoc.cpp
@@ -33,7 +33,25 @@ void run(size_t i, std::vector<int>& codes) {
}
}
-int day2(line_view file) {
+int test(int n, int v, std::vector<int> codes) {
+ codes[1] = n;
+ codes[2] = v;
+ run(0, codes);
+ return codes[0];
+}
+
+int test(int target, const std::vector<int>& codes) {
+ for (int n = 0; n <= 99; n++) {
+ for (int v = 0; v <= 99; v++) {
+ if (target == test(n, v, codes)) {
+ return n * 100 + v;
+ }
+ }
+ }
+ return 0;
+}
+
+std::pair<int, int> day2(line_view file) {
std::vector<int> optcodes;
const char* p = file.line;
while (p < file.line + file.length) {
@@ -42,10 +60,7 @@ int day2(line_view file) {
}
p++;
}
- optcodes[1] = 12;
- optcodes[2] = 2;
- run(0, optcodes);
- return optcodes[0];
+ return {test(12, 2, optcodes), test(19690720, optcodes)};
}
} // namespace aoc2019