Better permutation creation

This commit is contained in:
2025-06-16 12:58:38 -05:00
parent 72492db6ea
commit e2cb839086
3 changed files with 34 additions and 3 deletions

View File

@@ -57,3 +57,27 @@ pub fn create_operator_set(num_of_operators: usize) -> HashSet<Vec<Op>> {
operator_sets
}
fn create_permutations_recurse(
values: &HashSet<Op>,
len: usize,
permutations: &mut HashSet<Vec<Op>>,
curr_permutation: Vec<Op>,
) {
if curr_permutation.len() == len {
permutations.insert(curr_permutation);
return;
}
for v in values {
let mut next_permutation = curr_permutation.clone();
next_permutation.push(*v);
create_permutations_recurse(values, len, permutations, next_permutation);
}
}
pub fn create_permutations(set: HashSet<Op>, len: usize) -> HashSet<Vec<Op>> {
let mut permutations = HashSet::new();
create_permutations_recurse(&set, len, &mut permutations, vec![]);
permutations
}