My omnium-gatherom of scripts and source code.
1#include "algs.hpp"
2#include <string>
3#include <vector>
4#include <format>
5#include <type_traits>
6#include <valarray>
7
8/*
9template <std::permutable I, std::sentinel_for<I> S>
10func zip(I f1, S l1, I f2, S l2) -> std::vector<std::pair<std::iter_value_t<I>, std::iter_value_t<I>>>
11{
12 using II = std::pair<std::iter_value_t<I>, std::iter_value_t<I>>;
13 auto make_pair = [](auto x, auto y) { return std::make_pair(x, y); };
14 auto concat = [](auto v, auto e) { return v.push_back(e), v; };
15 auto out = std::vector<II>();
16 return std::transform_reduce(f1, l1, f2, l2, out, concat, make_pair);
17}
18*/
19
20template <std::size_t columns, std::size_t rows, typename T>
21[[nodiscard]] constexpr
22func transpose(std::span<T> m) -> std::span<T>
23{
24 static_assert(m.size() % columns == 0);
25}
26
27auto main() noexcept -> int
28{
29 auto even = [](auto x) { return x % 2 == 0; };
30 auto v = std::vector(50, 0);
31 auto w = std::vector(25, 0);
32
33 ra::iota(v, 1);
34 auto f = v.begin();
35 auto l = v.end();
36 gather(f, l, v.begin() + 17, even);
37 print_range(v);
38
39 print('\n', "\n");
40
41 ra::iota(v, 1);
42 f = v.begin();
43 l = v.end();
44 slide(f + 5, l - 40, v.begin() + 17);
45 print_range(v);
46
47 print('\n', "\n");
48
49 ra::iota(v, 0);
50 ra::iota(w, 50);
51 auto f1 = v.begin();
52 auto l1 = v.end();
53 auto f2 = w.begin();
54 auto l2 = w.end();
55 auto o = intercalate(f1, l1, f2, l2);
56 print_range(o); print('\n', "\n");
57 print_range(v); print('\n', "\n");
58 print_range(w); print('\n', "\n");
59 print(v.size(), "\n");
60
61
62 return 0;
63}