From affca52d6a67225d835d00a48a0a4fb9b494846a Mon Sep 17 00:00:00 2001 From: timeshifter Date: Thu, 20 Mar 2025 11:15:16 +0100 Subject: [PATCH] 41 --- src/euler41/Cargo.toml | 7 +++++++ src/euler41/src/main.rs | 24 ++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 src/euler41/Cargo.toml create mode 100644 src/euler41/src/main.rs 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()) +}