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