diff options
Diffstat (limited to 'src/2020/day8/aoc.cpp')
-rw-r--r-- | src/2020/day8/aoc.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/2020/day8/aoc.cpp b/src/2020/day8/aoc.cpp index 849bad9..830141a 100644 --- a/src/2020/day8/aoc.cpp +++ b/src/2020/day8/aoc.cpp @@ -1,5 +1,33 @@ #include "aoc.h" +#include <vector> namespace aoc2020 { +static void run(size_t index, std::vector<code>& cs, int* accumlator) { + auto& code = cs[index]; + if (code.executed == 0) { + size_t next = index + 1; + if (code.type == acc) { + *accumlator += code.value; + } + if (code.type == jmp) { + next = index + code.value; + } + code.executed += 1; + run(next, cs, accumlator); + } } + +int day8(line_view file) { + std::vector<code> cs; + int accumlator = 0; + per_line(file, [&cs](line_view lv) { + cs.emplace_back(lv); + return true; + }); + + run(0, cs, &accumlator); + return accumlator; +} + +} // namespace aoc2020 |