bingame-rs/src/main.rs

69 lines
1.3 KiB
Rust
Raw Normal View History

2021-12-11 16:57:57 +00:00
use rand::Rng;
use std::cmp::Ordering;
fn main() {
println!("Welcome to bingame! Type \"quit\" anytime to stop playing.");
2022-04-28 19:36:36 +00:00
let mut liminput = String::new();
println!("Provide an upward limit for generated numbers: ");
std::io::stdin()
.read_line(&mut liminput)
.unwrap();
let limit = liminput
.trim()
.parse::<u32>()
.unwrap();
2021-12-11 16:57:57 +00:00
// generate random number
2022-04-28 19:36:36 +00:00
let nombre: u32 = rand::thread_rng().gen_range(0..limit);
2021-12-11 16:57:57 +00:00
// convert number from decimal to binary notation
2022-04-28 19:36:36 +00:00
let mut binvec = vec![];
let mut countdown = nombre;
while countdown > 0 {
binvec.push(countdown % 2);
countdown /= 2;
2021-12-11 16:57:57 +00:00
}
2022-04-28 19:36:36 +00:00
let mut binnery = String::new();
2021-12-11 16:57:57 +00:00
for i in binvec {
2022-04-28 19:36:36 +00:00
binnery = i.to_string() + &binnery;
2021-12-11 16:57:57 +00:00
}
2022-04-28 19:36:36 +00:00
let binary = binnery
.parse::<u32>()
.unwrap();
println!("Type {} in binary", nombre);
let mut input = String::new();
std::io::stdin()
.read_line(&mut input)
.unwrap();
let guess = input
.trim()
.parse::<u32>()
.unwrap();
match guess.cmp(&binary) {
Ordering::Equal => {
println!("That's correct! {} in binary is {}!", nombre, binnery);
}
Ordering::Greater | Ordering::Less => {
println!("Nope! {} in binary is {}!", nombre, binnery);
2021-12-11 16:57:57 +00:00
}
}
2022-04-28 19:36:36 +00:00
}