diff --git a/src/euler95/Cargo.toml b/src/euler95/Cargo.toml index 269262f..8069e56 100644 --- a/src/euler95/Cargo.toml +++ b/src/euler95/Cargo.toml @@ -5,6 +5,9 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[dependencies] +itertools = "*" + [dev-dependencies] rstest = "0.17" diff --git a/src/euler95/src/main.rs b/src/euler95/src/main.rs index 6decb83..47bc04c 100644 --- a/src/euler95/src/main.rs +++ b/src/euler95/src/main.rs @@ -1,8 +1,15 @@ use std::collections::HashSet; +use itertools::Itertools; + const MAX: usize = 1_000_000; fn main() { + let mut x = build_proper_divisors(3); + x.sort(); + dbg!(x); + panic!(); + let mut chains = vec![]; let mut part_of_any_chain = HashSet::new(); @@ -23,10 +30,6 @@ fn main() { println!("{smallest}"); } -fn build_proper_divisors(max: usize) -> Vec> { - todo!() -} - fn try_build_chain_from_number( max: usize, mut current: usize, @@ -59,6 +62,18 @@ fn try_build_chain_from_number( } } +fn build_proper_divisors(max: usize) -> Vec<(usize, Vec)> { + // let mut result = vec![]; + + let result = (1..max + 1) + .combinations(2) + .map(|v| (v.clone().into_iter().product(), v)) + .collect(); + // result.push(x); + + result +} + fn get_proper_divisors(x: usize) -> Vec { let mut result = vec![1];