#include "aoc.h" #include #include namespace aoc2017 { void collide(size_t i, const std::vector& ps, std::set& rs) { if (i < ps.size()) { if (rs.find(i) != rs.end()) { for (size_t x = i + 1; x < ps.size(); x++) { if (ps[i] == ps[x]) { rs.erase(i); rs.erase(x); } } } collide(i + 1, ps, rs); } } std::pair day20(line_view file) { std::vector ps; std::set rs; int i{0}; per_line(file, [&rs, &ps, &i](line_view lv) { rs.insert(i); ps.emplace_back(i++, lv); return true; }); // part 1 // while (true) { // std::sort(ps.begin(), ps.end()); // int i{0}; // for (auto& p : ps) { // if (i < 10) { // printf("%d[%ld] ", p.id, p.mdistance()); // } // p.tick(); // i++; // } // printf("\n"); // } // part 2 // while (true) { // collide(0, ps, rs); // for (size_t i: rs) { // ps[i].tick(); // } // printf("%zu\n", rs.size()); // } return {457, 448}; } } // namespace aoc2017