13: fancier boost index()

This commit is contained in:
Eric Mertens 2023-03-28 16:49:04 -07:00
parent ff7439a922
commit 2db5c84bf8

View File

@ -1,21 +1,19 @@
#include <array> #include <array>
#include <cstdint> #include <cstdint>
#include <iostream> #include <iostream>
#include <set>
#include <sstream> #include <sstream>
#include <tuple>
#include <vector>
#include <variant> #include <variant>
#include <vector>
#include <boost/spirit/include/qi.hpp>
#include <boost/phoenix.hpp>
#include <boost/range/adaptor/indexed.hpp>
#include <doctest.h> #include <doctest.h>
#include <aocpp/Startup.hpp> #include <aocpp/Startup.hpp>
#include <aocpp/Overloaded.hpp> #include <aocpp/Overloaded.hpp>
#include <boost/spirit/include/qi.hpp>
#include <boost/phoenix.hpp>
#include <boost/range/irange.hpp>
namespace { namespace {
namespace phx = boost::phoenix; namespace phx = boost::phoenix;
@ -29,7 +27,6 @@ struct Tree {
std::variant<std::int64_t, Trees> rep; std::variant<std::int64_t, Trees> rep;
}; };
auto operator<(Tree const& x, std::int64_t y) -> bool; auto operator<(Tree const& x, std::int64_t y) -> bool;
auto operator<(std::int64_t x, Tree const& y) -> bool; auto operator<(std::int64_t x, Tree const& y) -> bool;
@ -98,8 +95,8 @@ auto Parse(std::istream & in) -> Input
auto Part1(Input const& input) -> std::size_t auto Part1(Input const& input) -> std::size_t
{ {
std::int64_t result {0}; std::int64_t result {0};
for (auto const i : boost::irange(input.size())) { for (auto const& [i,pair] : boost::adaptors::index(input)) {
if (input[i][0] < input[i][1]) { if (pair[0] < pair[1]) {
result += i + 1; result += i + 1;
} }
} }