#pragma once #include "common.h" #include namespace aoc2016 { struct bot { int idx; int vs[2] = {0, 0}; std::vector values; bot* outputs[2] = {nullptr, nullptr}; bool is_output = false; bool can_give() const noexcept { return vs[0] != 0 && vs[1] != 0; } bool set(int v) { bool done{false}; for (int i = 0; i < 2; i++) { if (vs[i] == 0) { done = true; vs[i] = v; break; } } if (vs[0] > vs[1]) { std::swap(vs[0], vs[1]); } return done; } void get(int v) { // bot as output values.push_back(v); } }; std::pair day10(line_view); } // namespace aoc2016