use rand::Rng; use std::cmp::Ordering; fn main() { println!("Welcome to bingame! Type \"quit\" anytime to stop playing."); 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::() .unwrap(); // generate random number let nombre: u32 = rand::thread_rng().gen_range(0..limit); // convert number from decimal to binary notation let mut binvec = vec![]; let mut countdown = nombre; while countdown > 0 { binvec.push(countdown % 2); countdown /= 2; } let mut binnery = String::new(); for i in binvec { binnery = i.to_string() + &binnery; } let binary = binnery .parse::() .unwrap(); println!("Type {} in binary", nombre); let mut input = String::new(); std::io::stdin() .read_line(&mut input) .unwrap(); let guess = input .trim() .parse::() .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); } } }