use rand::Rng; use std::cmp::Ordering; use std::io; fn main() { println!("Guess the number!"); let secret_number = rand::rng().random_range(1..=100); // println!("The secret number is: {secret_number}"); let mut p_next_correct: f32; let mut min_window: u32 = 0; let mut max_window: u32 = 100; loop { println!("Please input your guess."); let mut guess = String::new(); io::stdin() .read_line(&mut guess) .expect("Failed to read line"); // Turn the guess into a u32 type, excpecting errors. let guess: u32 = match guess.trim().parse() { Ok(num) => num, Err(_) => { if guess == "exit" { break; } else { println!("DO IT!"); continue; } } }; println!("You guessed: {}", guess); match guess.cmp(&secret_number) { Ordering::Less => { if guess > min_window { min_window = guess; } println!("Too small!"); } Ordering::Greater => { if guess < max_window { max_window = guess; } println!("Too large!"); } Ordering::Equal => { println!("You win!"); break; } } println!("Max: {max_window}, Min: {min_window}"); p_next_correct = 1.0 / ((max_window - min_window - 1) as f32); println!("Probability of next guess: {}", (p_next_correct * 100.0)); println!("\n"); } }