From a4927ec7a75f944baa2b0a5d2e02427e3dec735e Mon Sep 17 00:00:00 2001 From: Mariano Riefolo Date: Wed, 11 Sep 2024 12:24:58 +0200 Subject: [PATCH] Wrote program for Day 48 --- README.md | 2 +- .../Day-48_Christmas-Tree/day48/Cargo.toml | 6 ++++ .../Day-48_Christmas-Tree/day48/src/lib.rs | 12 +++++++ .../Day-48_Christmas-Tree/day48/src/main.rs | 16 +++++++++ .../day48/tests/examples.rs | 33 +++++++++++++++++++ 5 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 Week-07/Day-48_Christmas-Tree/day48/Cargo.toml create mode 100644 Week-07/Day-48_Christmas-Tree/day48/src/lib.rs create mode 100644 Week-07/Day-48_Christmas-Tree/day48/src/main.rs create mode 100644 Week-07/Day-48_Christmas-Tree/day48/tests/examples.rs diff --git a/README.md b/README.md index 7db0315..637288b 100644 --- a/README.md +++ b/README.md @@ -94,7 +94,7 @@ We encourage you to share your progress and ask questions in the Discussions sec | 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_check_mark: | | Day #46 | [Hot Pics Of Danny Devito](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-07/Day-46_Hot-Pics-Of-Danny-Devito) | :white_check_mark: | | Day #47 | [Zip It](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-07/Day-47_Zip-It) | :white_check_mark: | -| Day #48 | [Christmas Tree](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-07/Day-48_Christmas-Tree) | :white_large_square: | +| Day #48 | [Christmas Tree](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-07/Day-48_Christmas-Tree) | :white_check_mark: | | Day #49 | [Swimming Pool](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-07/Day-49_Swimming-Pool) | :white_large_square: | | Day #50 | [Tic Tac Toe](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-08/Day-50_Tic-Tac-Toe) | :white_large_square: | | Day #51 | [Asteroid Collision](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-08/Day-51_Asteroid-Collision) | :white_large_square: | diff --git a/Week-07/Day-48_Christmas-Tree/day48/Cargo.toml b/Week-07/Day-48_Christmas-Tree/day48/Cargo.toml new file mode 100644 index 0000000..2f0d312 --- /dev/null +++ b/Week-07/Day-48_Christmas-Tree/day48/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "day48" +version = "0.1.0" +edition = "2021" + +[dependencies] diff --git a/Week-07/Day-48_Christmas-Tree/day48/src/lib.rs b/Week-07/Day-48_Christmas-Tree/day48/src/lib.rs new file mode 100644 index 0000000..e887f2f --- /dev/null +++ b/Week-07/Day-48_Christmas-Tree/day48/src/lib.rs @@ -0,0 +1,12 @@ +pub fn tree(height: usize) -> Vec { + let mut tree = Vec::new(); + for i in 0..height { + tree.push(format!( + "{}{}{}", + " ".repeat(height - i - 1), + "#".repeat(i * 2 + 1), + " ".repeat(height - i - 1) + )); + } + tree +} diff --git a/Week-07/Day-48_Christmas-Tree/day48/src/main.rs b/Week-07/Day-48_Christmas-Tree/day48/src/main.rs new file mode 100644 index 0000000..d265e62 --- /dev/null +++ b/Week-07/Day-48_Christmas-Tree/day48/src/main.rs @@ -0,0 +1,16 @@ +use std::io::{self, Write}; + +use day48::tree; + +fn main() { + print!("Insert the height of the tree: "); + io::stdout().flush().unwrap(); + + let mut buffer = String::new(); + io::stdin().read_line(&mut buffer).unwrap(); + + let height: usize = buffer.trim().parse().unwrap(); + let tree = tree(height); + + println!("{:#?}", tree); +} diff --git a/Week-07/Day-48_Christmas-Tree/day48/tests/examples.rs b/Week-07/Day-48_Christmas-Tree/day48/tests/examples.rs new file mode 100644 index 0000000..44f97a2 --- /dev/null +++ b/Week-07/Day-48_Christmas-Tree/day48/tests/examples.rs @@ -0,0 +1,33 @@ +#[cfg(test)] +mod examples { + use day48::tree; + + #[test] + fn test1() { + assert_eq!(tree(1), vec!["#"]); + } + + #[test] + fn test2() { + assert_eq!(tree(2), vec![" # ", "###"]); + } + + #[test] + fn test3() { + assert_eq!( + tree(5), + vec![ + " # ", + " ### ", + " ##### ", + " ####### ", + "#########" + ] + ); + } + + #[test] + fn test4() { + assert_eq!(tree(0), Vec::::new()); + } +}