Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
18
Task/Permutations/Rust/permutations-2.rust
Normal file
18
Task/Permutations/Rust/permutations-2.rust
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
use std::collections::VecDeque;
|
||||
|
||||
fn permute<T, F: Fn(&[T])>(used: &mut Vec<T>, unused: &mut VecDeque<T>, action: &F) {
|
||||
if unused.is_empty() {
|
||||
action(used);
|
||||
} else {
|
||||
for _ in 0..unused.len() {
|
||||
used.push(unused.pop_front().unwrap());
|
||||
permute(used, unused, action);
|
||||
unused.push_back(used.pop().unwrap());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let mut queue = (1..4).collect::<VecDeque<_>>();
|
||||
permute(&mut Vec::new(), &mut queue, &|perm| println!("{:?}", perm));
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue