#include "algs.hpp" #include #include #include #include #include /* template S> func zip(I f1, S l1, I f2, S l2) -> std::vector, std::iter_value_t>> { using II = std::pair, std::iter_value_t>; auto make_pair = [](auto x, auto y) { return std::make_pair(x, y); }; auto concat = [](auto v, auto e) { return v.push_back(e), v; }; auto out = std::vector(); return std::transform_reduce(f1, l1, f2, l2, out, concat, make_pair); } */ template [[nodiscard]] constexpr func transpose(std::span m) -> std::span { static_assert(m.size() % columns == 0); } auto main() noexcept -> int { auto even = [](auto x) { return x % 2 == 0; }; auto v = std::vector(50, 0); auto w = std::vector(25, 0); ra::iota(v, 1); auto f = v.begin(); auto l = v.end(); gather(f, l, v.begin() + 17, even); print_range(v); print('\n', "\n"); ra::iota(v, 1); f = v.begin(); l = v.end(); slide(f + 5, l - 40, v.begin() + 17); print_range(v); print('\n', "\n"); ra::iota(v, 0); ra::iota(w, 50); auto f1 = v.begin(); auto l1 = v.end(); auto f2 = w.begin(); auto l2 = w.end(); auto o = intercalate(f1, l1, f2, l2); print_range(o); print('\n', "\n"); print_range(v); print('\n', "\n"); print_range(w); print('\n', "\n"); print(v.size(), "\n"); return 0; }