R "Zettelkasten/Hub Notes/NNFM Ontology.canvas" -> "NNFM Ontology.canvas" R "Zettelkasten/Hub Notes/Permanent Notes/Programming/Assembly/Assembly Canvas.canvas" -> "Programming/Assembly/Assembly Canvas.canvas" R "Zettelkasten/Hub Notes/Permanent Notes/Programming/Assembly/Untitled.md" -> Programming/Assembly/Untitled.md R "Zettelkasten/Hub Notes/Permanent Notes/Programming/Formal Methods/LEAN/Learning Plan.md" -> "Programming/Formal Methods/LEAN/Learning Plan.md" R "Zettelkasten/Hub Notes/Permanent Notes/Programming/Formal Methods/LEAN/Tutorial World.md" -> "Programming/Formal Methods/LEAN/Tutorial World.md" R "Zettelkasten/Hub Notes/Permanent Notes/Programming/Formal Methods/TLA/TLA Canvas.canvas" -> "Programming/Formal Methods/TLA/TLA Canvas.canvas" R "Zettelkasten/Hub Notes/Permanent Notes/Programming/Formal Methods/TLA/TLA+ Learning Plan.md" -> "Programming/Formal Methods/TLA/TLA+ Learning Plan.md" R "Zettelkasten/Hub Notes/Permanent Notes/Programming/Formal Methods/TLA/What is TLA?.md" -> "Programming/Formal Methods/TLA/What is TLA?.md"
65 lines
1.7 KiB
Rust
65 lines
1.7 KiB
Rust
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");
|
|
}
|
|
}
|