diff options
author | kaiwu <kaiwu2004@gmail.com> | 2022-04-19 18:44:06 +0800 |
---|---|---|
committer | kaiwu <kaiwu2004@gmail.com> | 2022-04-19 18:44:06 +0800 |
commit | 73adf92fd06a5bb252c8a3e0e17b1221cae590cb (patch) | |
tree | 24c0b1942b707192cc6b3e4b600217624920aca8 | |
parent | 48c40701db5a52fe7b80bc6eecca08c1447412b5 (diff) | |
download | advent-of-code-73adf92fd06a5bb252c8a3e0e17b1221cae590cb.tar.gz advent-of-code-73adf92fd06a5bb252c8a3e0e17b1221cae590cb.zip |
int computer
-rw-r--r-- | src/2019/day5/aoc.cpp | 14 | ||||
-rw-r--r-- | src/2019/day5/aoc.h | 2 |
2 files changed, 13 insertions, 3 deletions
diff --git a/src/2019/day5/aoc.cpp b/src/2019/day5/aoc.cpp index 33267b3..d1d7c4b 100644 --- a/src/2019/day5/aoc.cpp +++ b/src/2019/day5/aoc.cpp @@ -1,9 +1,9 @@ #include "aoc.h" -#include <vector> namespace aoc2019 { -static int input = 1; +static int* input = nullptr; +static int input_sequence = 0; void get_number(const char** pp, int* d) { const char* p = *pp; @@ -48,7 +48,7 @@ static size_t opt2(std::vector<int>& codes, std::vector<int>& outputs, size_t i, } static size_t opt3(std::vector<int>& codes, std::vector<int>& outputs, size_t i, int m1, int m2) { - get(codes, 0, i + 1) = input; + get(codes, 0, i + 1) = *(input + input_sequence++); return i + 2; } @@ -96,6 +96,14 @@ static void run(size_t i, std::vector<int>& codes, std::vector<int>& outputs) { } static int run(int i, std::vector<int> codes) { + input = &i; + input_sequence = 0; + std::vector<int> outputs; + run(0, codes, outputs); + return outputs[outputs.size() - 1]; +} + +int int_computer(int i[], std::vector<int> codes) { input = i; std::vector<int> outputs; run(0, codes, outputs); diff --git a/src/2019/day5/aoc.h b/src/2019/day5/aoc.h index fea6fb9..5c0e50e 100644 --- a/src/2019/day5/aoc.h +++ b/src/2019/day5/aoc.h @@ -1,8 +1,10 @@ #pragma once #include "common.h" +#include <vector> namespace aoc2019 { +int int_computer(int i[], std::vector<int> codes); std::pair<int, int> day5(line_view); } |