From 6b7daff6ccf2b4e82553fbe432aaa3b8e57548b3 Mon Sep 17 00:00:00 2001
From: Fabian Schmidt <fabschmidt96@gmail.com>
Date: Thu, 28 Nov 2024 14:22:42 +0100
Subject: [PATCH] euler 32

---
 src/bin/problem_32.rs | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)
 create mode 100644 src/bin/problem_32.rs

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::<i32>());
+}