This commit is contained in:
timeshifter
2025-03-19 15:21:12 +01:00
parent d7995c20c3
commit 24cff611a3
2 changed files with 62 additions and 0 deletions
+10
View File
@@ -0,0 +1,10 @@
[package]
name = "euler38"
version = "0.1.0"
edition = "2024"
[dependencies]
[profile.release]
lto = "thin"
debug = true
+52
View File
@@ -0,0 +1,52 @@
fn main() {
let mut largest_number = 0;
let mut largest_string = String::new();
let mut string = String::new();
for integer in 1..=500_000_000_usize {
string.clear();
for factor in 1.. {
let number = integer * factor;
string.push_str(&number.to_string());
let as_number = string.parse::<usize>().unwrap();
if correct_length(&string) && as_number > largest_number && is_pandigital(&string) {
largest_number = as_number;
largest_string = string.clone();
break;
}
if too_large(&string) {
break;
}
}
}
println!("{largest_string}");
}
fn is_pandigital(s: &str) -> bool {
for c in '1'..='9' {
if !s.contains(c) {
return false;
}
}
true
}
fn correct_length(s: &str) -> bool {
s.len() == 9
}
fn too_large(s: &str) -> bool {
s.len() > 9
}
#[cfg(test)]
mod tests {
use crate::is_pandigital;
#[test]
fn test_pandigital() {
assert!(is_pandigital(&192384576.to_string()));
assert!(is_pandigital(&918273645.to_string()));
assert!(!is_pandigital(&9.to_string()));
}
}