#include #include #include #include #include #include #include #include #include namespace { struct World { std::vector ups, downs, lefts, rights; std::size_t height, width; }; auto Parse(std::istream & in) -> World { auto result = World{}; auto y = std::size_t{0}; auto line = std::string{}; while (std::getline(in, line)) { for (auto const [x,c] : boost::adaptors::index(line)) { switch (c) { case '>': result.rights.emplace_back(x-1,y-1); break; case '<': result.lefts.emplace_back(x-1,y-1); break; case '^': result.ups.emplace_back(x-1,y-1); break; case 'v': result.downs.emplace_back(x-1,y-1); break; } } ++y; } result.height = y - 2; result.width = line.size() - 2; return result; } } // namespace TEST_SUITE("2022-24 examples") { TEST_CASE("example") { std::istringstream in { "#.#####\n" "#.....#\n" "#>....#\n" "#.....#\n" "#...v.#\n" "#.....#\n" "#####.#\n" }; auto const world = Parse(in); } } auto Main(std::istream & in, std::ostream & out) -> void { auto const input = Parse(in); //out << "Part 1: " << Part1(in) << std::endl; }