Solution 4
This commit is contained in:
		
							
								
								
									
										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);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user