problemreductions/
config.rs1pub fn index_to_config(index: usize, num_variables: usize, num_flavors: usize) -> Vec<usize> {
7 let mut config = vec![0; num_variables];
8 let mut remaining = index;
9 for i in (0..num_variables).rev() {
10 config[i] = remaining % num_flavors;
11 remaining /= num_flavors;
12 }
13 config
14}
15
16pub fn config_to_index(config: &[usize], num_flavors: usize) -> usize {
20 let mut index = 0;
21 for &value in config {
22 index = index * num_flavors + value;
23 }
24 index
25}
26
27pub(crate) fn config_to_bits(config: &[usize]) -> Vec<bool> {
29 config.iter().map(|&v| v != 0).collect()
30}
31
32pub(crate) fn bits_to_config(bits: &[bool]) -> Vec<usize> {
34 bits.iter().map(|&b| if b { 1 } else { 0 }).collect()
35}
36
37#[cfg(test)]
38#[path = "unit_tests/config.rs"]
39mod tests;