Permutation matrices research.
1#include "lib.hpp"
2#include "prelude.hpp"
3#include <cmath>
4#include <format>
5
6using namespace std;
7/*
8function unseq(lst::Vector{<:Integer})::Vector{Integer}
9 acc = []
10 for (idx, elem) ∈ enumerate(lst)
11 l, r = splitat(acc, elem)
12 acc = [l;[idx];r]
13 end
14 acc
15end
16*/
17fn from_indices(Vec<U8> lst) -> Vec<U8> {
18 cout << format("lst: ");
19 for (let e : lst) cout << e << ' ';
20 cout << endl;
21 Vec<U8> acc;
22 for (let [idx, elem] : std::views::enumerate(lst)) {
23 var left = Vec<U64>(acc.begin(), acc.begin() + elem);
24 cout << format("left: ");
25 for (let e : left) cout << e << ' ';
26 cout << endl;
27 let right = Vec<U64>(acc.begin() + elem, acc.end());
28 cout << format("right: ");
29 for (let e : right) cout << e << ' ';
30 cout << endl;
31 left.push_back(idx);
32 left.insert(left.end(), right.begin(), right.end());
33 cout << "both: ";
34 for (let e : left) cout << e << ' ';
35 cout << endl;
36 }
37 return acc;
38}