diff options
author | kaiwu <kaiwu2004@gmail.com> | 2023-01-19 16:13:01 +0800 |
---|---|---|
committer | kaiwu <kaiwu2004@gmail.com> | 2023-01-19 16:13:01 +0800 |
commit | 6b38eb27ba31546c49dee6934700172380a14325 (patch) | |
tree | 65ef700599f85b236bc5fd3d3422242997379e81 /src/2016/day10/aoc.h | |
parent | 1ec354bbbde7d9f058d09d09be6a32ae3c4a814e (diff) | |
download | advent-of-code-6b38eb27ba31546c49dee6934700172380a14325.tar.gz advent-of-code-6b38eb27ba31546c49dee6934700172380a14325.zip |
2016 day10
Diffstat (limited to 'src/2016/day10/aoc.h')
-rw-r--r-- | src/2016/day10/aoc.h | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/src/2016/day10/aoc.h b/src/2016/day10/aoc.h index fb3f80b..a7d8d72 100644 --- a/src/2016/day10/aoc.h +++ b/src/2016/day10/aoc.h @@ -3,5 +3,30 @@ #include <vector> namespace aoc2016 { + +struct bot { + int idx; + int vs[2] = {0, 0}; + std::vector<int> values; + bot* outputs[2] = {nullptr, nullptr}; + bool is_output = false; + + bool can_give() const noexcept { return vs[0] != 0 && vs[1] != 0; } + void set(int v) { + for (int i = 0; i < 2; i++) { + if (vs[i] == 0) { + vs[i] = v; + break; + } + } + if (vs[0] > vs[1]) { + std::swap(vs[0], vs[1]); + } + } + + void get(int v) { // bot as output + values.push_back(v); + } +}; std::pair<int64_t, int64_t> day10(line_view); -} +} // namespace aoc2016 |