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