diff --git a/src/bin/problem_32.rs b/src/bin/problem_32.rs new file mode 100644 index 0000000..0146a39 --- /dev/null +++ b/src/bin/problem_32.rs @@ -0,0 +1,24 @@ +use std::collections::HashSet; + +use utils::permutation::Permutator; + +fn main() { + let mut res = HashSet::new(); + let permutator = Permutator::new(vec![1, 2, 3, 4, 5, 6, 7, 8, 9]); + // let perm = vec![7, 2, 5, 4, 3, 9, 1, 8, 6]; + for perm in permutator { + for equal_sign_idx in 1..8 { + let possible_product = perm[..equal_sign_idx].iter().fold(0, |acc, e| acc * 10 + e); + for mul_sign_idx in equal_sign_idx..9 { + let a = perm[equal_sign_idx..mul_sign_idx] + .iter() + .fold(0, |acc, e| acc * 10 + e); + let b = perm[mul_sign_idx..].iter().fold(0, |acc, e| acc * 10 + e); + if a * b == possible_product { + res.insert(possible_product); + } + } + } + } + println!("{}", res.iter().sum::()); +}