diff --git a/a2_guessing_game/src/lib.rs b/a2_guessing_game/src/lib.rs new file mode 100644 index 0000000000000000000000000000000000000000..d8a1cc53659d690823fac7cb5a2bd3507cdb2b3a --- /dev/null +++ b/a2_guessing_game/src/lib.rs @@ -0,0 +1 @@ +pub mod results; diff --git a/a2_guessing_game/src/main.rs b/a2_guessing_game/src/main.rs index 68af77b8d54bfdabe7a13aecc0f5111fc2b9ead9..f92e606711a6aee7634348caea3387f9ca545bce 100644 --- a/a2_guessing_game/src/main.rs +++ b/a2_guessing_game/src/main.rs @@ -1,5 +1,6 @@ extern crate rand; extern crate colored; +extern crate guessing_game; use std::io; //standard in-out use std::cmp::Ordering; @@ -10,6 +11,7 @@ use rand::Rng; use std::io::Write; //seemingly needed to use io::stdout().flush() use colored::*; + fn get_input() -> Result<u32, String> { //returns io::Result, this has .expect() method let mut guess = String::new(); @@ -26,49 +28,6 @@ fn get_input() -> Result<u32, String> { } } -fn print_guesses(v: &Vec<(u32, String)>) { - let iterations = 2; - for _i in 0..iterations { - println!("\nResults: Printing All\nAttempt | Guess"); - for g in v { - println!(" {} | {}", g.0, g.1); - } - } -} - -fn print_the_last_three_guesses_in_backwards_order_really_nicely(v: &Vec<(u32, String)>) { - let mut count = 0; - println!("\nResults: Printing Last Three\nAttempt | Guess"); - for g in v.iter().rev() { - println!(" {} | {}", g.0, g.1); - count += 1; - if count == 3 { break; } - } -} - -fn print_hashmap(hm: &HashMap<u32, String>) { - println!("\nResults: Printing HashMap\nAttempt | Guess"); - for m in hm{ - println!(" {:?} | {:?}", m.0, m.1); - } -} - -fn print_hashmap_last_three(hm: &HashMap<u32, String>) { - println!("\nResults: Printing Last Three in Hashmap\nAttempt | Guess"); - let mut entries = 0; - for _m in hm.iter() { - entries += 1; - } - //let ln: u32 = hm.len(); //Give error because hm.len() is usize, not u32 - - for i in (max(entries-2, 1)..entries+1).rev() { - let mut item = hm.get(&i); - match item { - Some(num) => println!(" {} | {}", i, num), - None => println!("Nothing!"), - }; - } -} fn main() { println!("{}", "\n\nGuess the number or perish. :)".bold()); @@ -129,9 +88,14 @@ fn main() { println!("\nYou've guessed {} time(s) already!", attempts.to_string().yellow()) } - print_guesses(&guesses); - print_the_last_three_guesses_in_backwards_order_really_nicely(&guesses); - print_hashmap(&guess_hashmap); - print_hashmap_last_three(&guess_hashmap); + //print_guesses(&guesses); + //print_the_last_three_guesses_in_backwards_order_really_nicely(&guesses); + //print_hashmap(&guess_hashmap); + //print_hashmap_last_three(&guess_hashmap); + guessing_game::results::print_guesses(&guesses); + guessing_game::results::print_the_last_three_guesses_in_backwards_order_really_nicely(&guesses); + guessing_game::results::print_hashmap(&guess_hashmap); + guessing_game::results::print_hashmap_last_three(&guess_hashmap); } + diff --git a/a2_guessing_game/src/results.rs b/a2_guessing_game/src/results.rs new file mode 100644 index 0000000000000000000000000000000000000000..0cbf61bfbaa5ae88ba304e177a993a6d4ca25741 --- /dev/null +++ b/a2_guessing_game/src/results.rs @@ -0,0 +1,48 @@ + +use std::cmp::max; +use std::collections::HashMap; + +pub fn print_guesses(v: &Vec<(u32, String)>) { + let iterations = 2; + for _i in 0..iterations { + println!("\nResults: Printing All\nAttempt | Guess"); + for g in v { + println!(" {} | {}", g.0, g.1); + } + } +} + +pub fn print_the_last_three_guesses_in_backwards_order_really_nicely(v: &Vec<(u32, String)>) { + let mut count = 0; + println!("\nResults: Printing Last Three\nAttempt | Guess"); + for g in v.iter().rev() { + println!(" {} | {}", g.0, g.1); + count += 1; + if count == 3 { break; } + } +} + +pub fn print_hashmap(hm: &HashMap<u32, String>) { + println!("\nResults: Printing HashMap\nAttempt | Guess"); + for m in hm{ + println!(" {:?} | {:?}", m.0, m.1); + } +} + +pub fn print_hashmap_last_three(hm: &HashMap<u32, String>) { + println!("\nResults: Printing Last Three in Hashmap\nAttempt | Guess"); + let mut entries = 0; + for _m in hm.iter() { + entries += 1; + } + //let ln: u32 = hm.len(); //Give error because hm.len() is usize, not u32 + + for i in (max(entries-2, 1)..entries+1).rev() { + let mut item = hm.get(&i); + match item { + Some(num) => println!(" {} | {}", i, num), + None => println!("Nothing!"), + }; + } +} +