diff --git a/README.md b/README.md index b22299b..c3d8f1a 100644 --- a/README.md +++ b/README.md @@ -88,7 +88,7 @@ We encourage you to share your progress and ask questions in the Discussions sec | Day #39 | [Halloween Sale](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-06/Day-39_Halloween-Sale) | :white_check_mark: | | Day #40 | [Larrys Array](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-06/Day-40_Larrys-Array) | :white_check_mark: | | Day #41 | [Sales By Match](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-06/Day-41_Sales-By-Match) | :white_check_mark: | -| Day #42 | [Drawing Book](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-06/Day-42_Drawing-Book) | :white_large_square: | +| Day #42 | [Drawing Book](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-06/Day-42_Drawing-Book) | :white_check_mark: | | Day #43 | [Area Of A Triangle](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-07/Day-43_Area-Of-A-Triangle) | :white_large_square: | | Day #44 | [Maximum Edge Of A Triangle](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-07/Day-44_Maximum-Edge-Of-A-Triangle) | :white_large_square: | | Day #45 | [Subtract The Swapped Bits...](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-07/Day-45_Subtract-The-Swapped-Bits-Without-Temp-Storage) | :white_large_square: | diff --git a/Week-06/Day-42_Drawing-Book/day42/Cargo.toml b/Week-06/Day-42_Drawing-Book/day42/Cargo.toml new file mode 100644 index 0000000..d54b90f --- /dev/null +++ b/Week-06/Day-42_Drawing-Book/day42/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "day42" +version = "0.1.0" +edition = "2021" + +[dependencies] diff --git a/Week-06/Day-42_Drawing-Book/day42/src/lib.rs b/Week-06/Day-42_Drawing-Book/day42/src/lib.rs new file mode 100644 index 0000000..1b96500 --- /dev/null +++ b/Week-06/Day-42_Drawing-Book/day42/src/lib.rs @@ -0,0 +1,3 @@ +pub fn min_pages(n: usize, p: usize) -> usize { + std::cmp::min(p / 2, (n + (n + 1) % 2 - p) / 2) +} diff --git a/Week-06/Day-42_Drawing-Book/day42/src/main.rs b/Week-06/Day-42_Drawing-Book/day42/src/main.rs new file mode 100644 index 0000000..f6e066e --- /dev/null +++ b/Week-06/Day-42_Drawing-Book/day42/src/main.rs @@ -0,0 +1,32 @@ +use day42::min_pages; + +fn read_usize(request: &str) -> Result { + use std::io::{self, Write}; + print!("{}", request); + io::stdout().flush().expect("Failed to flush stdout."); + let mut input = String::new(); + io::stdin() + .read_line(&mut input) + .expect("Failed to read from stdin."); + input.trim().parse() +} + +fn main() { + let n = match read_usize("Insert the number of pages: ") { + Ok(n) => n, + Err(e) => { + eprintln!("Error: {}", e); + return; + } + }; + let p = match read_usize("Insert the page number: ") { + Ok(p) => p, + Err(e) => { + eprintln!("Error: {}", e); + return; + } + }; + + let result = min_pages(n, p); + println!("The minimum number of pages to turn is: {}", result); +} diff --git a/Week-06/Day-42_Drawing-Book/day42/tests/example.rs b/Week-06/Day-42_Drawing-Book/day42/tests/example.rs new file mode 100644 index 0000000..3ff2862 --- /dev/null +++ b/Week-06/Day-42_Drawing-Book/day42/tests/example.rs @@ -0,0 +1,9 @@ +#[cfg(test)] +mod example { + use day42::min_pages; + + #[test] + fn test() { + assert_eq!(min_pages(5, 3), 1); + } +}