From 9383ebd49a5d3aac0f15035d479a150588fab2b2 Mon Sep 17 00:00:00 2001 From: Mariano Riefolo Date: Thu, 8 Aug 2024 11:10:50 +0200 Subject: [PATCH] Wrote program for Day 14 --- README.md | 2 +- .../day14/Cargo.toml | 6 ++++++ .../day14/src/lib.rs | 18 ++++++++++++++++ .../day14/src/main.rs | 15 +++++++++++++ .../day14/tests/examples.rs | 21 +++++++++++++++++++ 5 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 Week-02/Day-14_Karacas-Encryption-Algorithm/day14/Cargo.toml create mode 100644 Week-02/Day-14_Karacas-Encryption-Algorithm/day14/src/lib.rs create mode 100644 Week-02/Day-14_Karacas-Encryption-Algorithm/day14/src/main.rs create mode 100644 Week-02/Day-14_Karacas-Encryption-Algorithm/day14/tests/examples.rs diff --git a/README.md b/README.md index 176ae6e..888aade 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ We encourage you to share your progress and ask questions in the Discussions sec | Day #11 | [Restore IP Addresses](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-02/Day-11_Restore-IP-Addresses) | :white_check_mark: | | Day #12 | [Mountains or Valleys](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-02/Day-12_Mountains_And_Valleys) | :white_check_mark: | | Day #13 | [Need Help With Your Packing](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-02/Day-13_Need-Help-With-Packing) | :white_check_mark: | -| Day #14 | [The Karacas Encryption Algorithm](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-02/Day-14_Karacas-Encryption-Algorithm) | :white_large_square: | +| Day #14 | [The Karacas Encryption Algorithm](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-02/Day-14_Karacas-Encryption-Algorithm) | :white_check_mark: | | Day #15 | [Valid Anagram](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-03/Day-15_Valid-Anagram) | :white_large_square: | | Day #16 | [Nim Game](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-03/Day-16_Nim-Game) | :white_large_square: | | Day #17 | [Prison Break](https://github.com/LiveGray/100-Days-Of-Rust/tree/main/Week-03/Day-17_Prison-Break) | :white_large_square: | diff --git a/Week-02/Day-14_Karacas-Encryption-Algorithm/day14/Cargo.toml b/Week-02/Day-14_Karacas-Encryption-Algorithm/day14/Cargo.toml new file mode 100644 index 0000000..69b9772 --- /dev/null +++ b/Week-02/Day-14_Karacas-Encryption-Algorithm/day14/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "day14" +version = "0.1.0" +edition = "2021" + +[dependencies] diff --git a/Week-02/Day-14_Karacas-Encryption-Algorithm/day14/src/lib.rs b/Week-02/Day-14_Karacas-Encryption-Algorithm/day14/src/lib.rs new file mode 100644 index 0000000..aacb8ee --- /dev/null +++ b/Week-02/Day-14_Karacas-Encryption-Algorithm/day14/src/lib.rs @@ -0,0 +1,18 @@ +pub fn encrypt(plaintext: &str) -> String { + let mut encrypted = String::new(); + + for c in plaintext.chars().rev() { + encrypted.push(match c { + 'a' => '0', + 'e' => '1', + 'i' => '2', + 'o' => '2', + 'u' => '3', + _ => c, + }); + } + + encrypted.push_str("aca"); + + encrypted +} diff --git a/Week-02/Day-14_Karacas-Encryption-Algorithm/day14/src/main.rs b/Week-02/Day-14_Karacas-Encryption-Algorithm/day14/src/main.rs new file mode 100644 index 0000000..17c06f2 --- /dev/null +++ b/Week-02/Day-14_Karacas-Encryption-Algorithm/day14/src/main.rs @@ -0,0 +1,15 @@ +use day14::encrypt; +use std::io::{self, Write}; + +fn main() { + let mut buffer = String::new(); + + print!("Insert the string you want to encrypt: "); + io::stdout().flush().expect("Failed to flush stout."); + + io::stdin() + .read_line(&mut buffer) + .expect("Failed to read from stdin."); + + println!("Your message encrypted is: {}", encrypt(buffer.trim())); +} diff --git a/Week-02/Day-14_Karacas-Encryption-Algorithm/day14/tests/examples.rs b/Week-02/Day-14_Karacas-Encryption-Algorithm/day14/tests/examples.rs new file mode 100644 index 0000000..66446a4 --- /dev/null +++ b/Week-02/Day-14_Karacas-Encryption-Algorithm/day14/tests/examples.rs @@ -0,0 +1,21 @@ +use day14::encrypt; + +#[test] +fn example1() { + assert_eq!(encrypt("banana"), "0n0n0baca"); +} + +#[test] +fn example2() { + assert_eq!(encrypt("karaca"), "0c0r0kaca"); +} + +#[test] +fn example3() { + assert_eq!(encrypt("burak"), "k0r3baca"); +} + +#[test] +fn example4() { + assert_eq!(encrypt("alpaca"), "0c0pl0aca"); +}