diff options
author | kaiwu <kaiwu2004@gmail.com> | 2022-05-14 17:17:04 +0800 |
---|---|---|
committer | kaiwu <kaiwu2004@gmail.com> | 2022-05-14 17:17:04 +0800 |
commit | 1a9146ae65c309c1c4dafb57a08ffb25c632fa78 (patch) | |
tree | 25df8befca23799897ee0755f1be3e066db1f8ac /src/2020/day8/aoc.cpp | |
parent | 3063b07245326e11667d50eeed1eaa52b93b8f68 (diff) | |
download | advent-of-code-1a9146ae65c309c1c4dafb57a08ffb25c632fa78.tar.gz advent-of-code-1a9146ae65c309c1c4dafb57a08ffb25c632fa78.zip |
2020 day8 part1
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 |