c3: init
This commit is contained in:
		
					parent
					
						
							
								f28b29841a
							
						
					
				
			
			
				commit
				
					
						5b59d5661f
					
				
			
		
					 4 changed files with 60 additions and 0 deletions
				
			
		
							
								
								
									
										4
									
								
								Cargo.lock
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								Cargo.lock
									
										
									
										generated
									
									
									
								
							|  | @ -16,6 +16,10 @@ dependencies = [ | ||||||
|  "geometry", |  "geometry", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "challenge-3" | ||||||
|  | version = "0.1.0" | ||||||
|  | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "geometry" | name = "geometry" | ||||||
| version = "0.1.0" | version = "0.1.0" | ||||||
|  |  | ||||||
|  | @ -8,4 +8,5 @@ members = [ | ||||||
|     # Challenge |     # Challenge | ||||||
|     "challenges/december-2024/c1", |     "challenges/december-2024/c1", | ||||||
|     "challenges/december-2024/c2", |     "challenges/december-2024/c2", | ||||||
|  |     "challenges/december-2024/c3", | ||||||
| ] | ] | ||||||
|  |  | ||||||
							
								
								
									
										7
									
								
								challenges/december-2024/c3/Cargo.toml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								challenges/december-2024/c3/Cargo.toml
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,7 @@ | ||||||
|  | [package] | ||||||
|  | name = "challenge-3" | ||||||
|  | version = "0.1.0" | ||||||
|  | edition = "2021" | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
							
								
								
									
										48
									
								
								challenges/december-2024/c3/src/main.rs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								challenges/december-2024/c3/src/main.rs
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,48 @@ | ||||||
|  | use std::io::{self, Write}; | ||||||
|  | 
 | ||||||
|  | // Sudan function is quite simple, here's the basics:the basics:
 | ||||||
|  | // When n = 0, `F(n, x, y) = x + y`
 | ||||||
|  | // When y = 0, `F(n, x, y) = x`
 | ||||||
|  | // Otherwise, `F(n, x, y) = F(n - 1, F(n, x, y - 1), F(n, x, y - 1) + y)`
 | ||||||
|  | fn sudan(n: i64, x: i64, y: i64) -> i64 { | ||||||
|  |     if n == 0 { | ||||||
|  |         x + y | ||||||
|  |     } else if y == 0 { | ||||||
|  |         x | ||||||
|  |     } else { | ||||||
|  |         sudan(n - 1, sudan(n, x, y - 1), sudan(n, x, y - 1) + y) | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | fn get_input<T: std::str::FromStr>(prompt: &str) -> Result<T, String> { | ||||||
|  |     print!("{}", prompt); | ||||||
|  |     io::stdout().flush().expect("Failed to flush stdout"); | ||||||
|  | 
 | ||||||
|  |     let mut input = String::new(); | ||||||
|  |     io::stdin() | ||||||
|  |         .read_line(&mut input) | ||||||
|  |         .map_err(|_| "Failed to read line".to_string())?; | ||||||
|  | 
 | ||||||
|  |     input | ||||||
|  |         .trim() | ||||||
|  |         .parse::<T>() | ||||||
|  |         .map_err(|_| "Invalid input. Please enter a valid number.".to_string()) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | fn get_input_value<T: std::str::FromStr>(prompt: &str) -> T { | ||||||
|  |     loop { | ||||||
|  |         match get_input(prompt) { | ||||||
|  |             Ok(value) => return value, | ||||||
|  |             Err(e) => eprintln!("{}", e), | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | fn main() { | ||||||
|  |     let n: i64 = get_input_value("Enter the value for n: "); | ||||||
|  |     let x: i64 = get_input_value("Enter the value for x: "); | ||||||
|  |     let y: i64 = get_input_value("Enter the value for y: "); | ||||||
|  | 
 | ||||||
|  |     let result = sudan(n, x, y); | ||||||
|  |     println!("The result of F({}, {}, {}) is: {}", n, x, y, result); | ||||||
|  | } | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue