contained_core/utils.rs
1/*
2 Appellation: utils <module>
3 Contrib: FL03 <jo3mccain@icloud.com>
4 Description: ... summary ...
5*/
6
7/// [subspace] is a function for creating subsets of a given [Vec] and set size
8pub fn subspace<T: Clone>(args: Vec<T>, size: usize) -> Vec<Vec<T>> {
9 let mut res = Vec::<Vec<T>>::new();
10 for i in 0..args.len() {
11 let tmp = (1..size)
12 .map(|z: usize| (i + z) % size)
13 .collect::<Vec<usize>>();
14 for j in 0..tmp.len() {
15 let mut subset = vec![args[i].clone()];
16 subset.append(
17 &mut (0..tmp.len())
18 .map(|k: usize| args[tmp[(j + k) % tmp.len()]].clone())
19 .collect(),
20 );
21 res.push(subset.clone());
22 }
23 }
24 res
25}