Solution 4

This commit is contained in:
Fabian Schmidt 2024-09-16 12:42:55 +02:00
parent 26d71160a7
commit ba623894f1

42
src/bin/problem_4.rs Normal file
View File

@ -0,0 +1,42 @@
fn main() {
let result = find_largest_palindrome(3);
println!("Result: {}", result);
}
fn find_largest_palindrome(digits: u32) -> i64 {
let mut largest = 0;
let lower = 10_i64.pow(digits - 1);
let upper = 10_i64.pow(digits);
for i in lower..upper {
for j in lower..upper {
let product = i * j;
if check_palindrome(product) && product > largest {
largest = product;
}
}
}
return largest;
}
fn check_palindrome(number: i64) -> bool {
let number: Vec<char> = number.to_string().chars().collect();
let upper = (number.len() as f64 / 2.0).ceil() as usize;
for pos in 0..upper {
if number[pos] != number[number.len() - 1 - pos] {
return false;
}
}
return true;
}
#[cfg(test)]
mod tests {
use crate::find_largest_palindrome;
#[test]
fn it_works() {
let result = find_largest_palindrome(2);
assert_eq!(result, 9009);
}
}