Solution 4
This commit is contained in:
parent
26d71160a7
commit
ba623894f1
42
src/bin/problem_4.rs
Normal file
42
src/bin/problem_4.rs
Normal 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);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user