diff --git a/src/euler41/Cargo.toml b/src/euler41/Cargo.toml new file mode 100644 index 0000000..f6efbb0 --- /dev/null +++ b/src/euler41/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "euler41" +version = "0.1.0" +edition = "2024" + +[dependencies] +primes = {version = "*", path = "../../lib/primes"} diff --git a/src/euler41/src/main.rs b/src/euler41/src/main.rs new file mode 100644 index 0000000..0e95fad --- /dev/null +++ b/src/euler41/src/main.rs @@ -0,0 +1,24 @@ +use primes::Primes; + +fn main() { + let primes = Primes::get_between(2, 7_654_321); + let result = primes + .into_vec() + .into_iter() + .rev() + .filter_map(|number| is_pandigital(&number.to_string())) + .next() + .unwrap(); + + println!("{result}"); +} + +fn is_pandigital(s: &str) -> Option { + let length = s.len().to_string().chars().next().unwrap(); + for c in '1'..=length { + if !s.contains(c) { + return None; + } + } + Some(s.to_string()) +}