From c0ae7d3f455530e6c3de86ade17596e4e6ddbb76 Mon Sep 17 00:00:00 2001 From: Daniel Tomlinson Date: Wed, 25 Nov 2020 01:12:06 +0000 Subject: [PATCH 1/4] Adding latest --- src/pig_latin.rs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/pig_latin.rs b/src/pig_latin.rs index abf130b..c4a5fb7 100644 --- a/src/pig_latin.rs +++ b/src/pig_latin.rs @@ -12,8 +12,16 @@ fn pig_latin(string: &str) -> String { let s = String::from(string); - println!("{:?}", s.chars()); - s + let mut latinised = String::new(); + let vowels = ['a', 'e', 'i', 'o', 'u']; + + let first_character = s.chars().next().unwrap(); + if vowels.contains(&first_character) { + latinised = format!("{}-hay", &s); + } else { + latinised = format!("{}ay", &first_character); + } + latinised } #[cfg(test)] @@ -21,7 +29,7 @@ mod test { use super::*; #[test] fn test_pig_latin() { - let string = "rust❤"; + let string = "arust"; let result = pig_latin(string); println!("{}", result); } From 8ac081813c90c597ca5d1ea5c042aa760befc768 Mon Sep 17 00:00:00 2001 From: Daniel Tomlinson Date: Wed, 25 Nov 2020 01:19:16 +0000 Subject: [PATCH 2/4] Adding latest --- src/pig_latin.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/pig_latin.rs b/src/pig_latin.rs index c4a5fb7..beb244f 100644 --- a/src/pig_latin.rs +++ b/src/pig_latin.rs @@ -14,12 +14,21 @@ fn pig_latin(string: &str) -> String { let s = String::from(string); let mut latinised = String::new(); let vowels = ['a', 'e', 'i', 'o', 'u']; + let mut starts_with_vowel = false; let first_character = s.chars().next().unwrap(); if vowels.contains(&first_character) { latinised = format!("{}-hay", &s); + starts_with_vowel = true; } else { - latinised = format!("{}ay", &first_character); + latinised = format!("-{}ay", &first_character); + } + for (pos, char) in s.char_indices() { + if pos == 0 && starts_with_vowel { + continue + } else { + + } } latinised } From 77daa12e47d1b6adcfea0f37e763a06de399e6fc Mon Sep 17 00:00:00 2001 From: Daniel Tomlinson Date: Wed, 25 Nov 2020 01:41:31 +0000 Subject: [PATCH 3/4] Adding final pig latin --- src/main.rs | 5 +++++ src/pig_latin.rs | 55 ++++++++++++++++++++++++++++-------------------- 2 files changed, 37 insertions(+), 23 deletions(-) diff --git a/src/main.rs b/src/main.rs index d131701..ddb4bad 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,10 +6,15 @@ mod pig_latin; fn main() { // Stats + println!("Stats"); let data = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2]; let mut numbers = stats::NewStatsCalculator::from_vec(&data); println!("Data: {:?}", numbers); println!("Mean: {:?}", numbers.get_mean()); println!("Median: {:?}", numbers.get_median()); println!("Mode: {:?}", numbers.get_mode()); + + println!("\nPig Latin"); + println!("{}", pig_latin::pig_latin("rustacian")); + println!("{}", pig_latin::pig_latin("awesome")); } diff --git a/src/pig_latin.rs b/src/pig_latin.rs index beb244f..49247e1 100644 --- a/src/pig_latin.rs +++ b/src/pig_latin.rs @@ -1,45 +1,54 @@ -// Take a &str -// - assume single words (check for no spaces) -// - convert to String -// pop the first -// append ay -// move to end -// Handle sentences: take a &str, convert to array, then do the above for each and return -// a new array -// https://scottwlaforest.com/rust/the-rust-book-chapter-8-exercises/ - -// NOTE: Check for vowels! - -fn pig_latin(string: &str) -> String { +pub fn pig_latin(string: &str) -> String { let s = String::from(string); + let mut portion = String::new(); let mut latinised = String::new(); - let vowels = ['a', 'e', 'i', 'o', 'u']; let mut starts_with_vowel = false; + let vowels = ['a', 'e', 'i', 'o', 'u']; + + if s.is_empty() { + return s; + } let first_character = s.chars().next().unwrap(); + if vowels.contains(&first_character) { - latinised = format!("{}-hay", &s); + portion.push_str("-hay"); starts_with_vowel = true; } else { - latinised = format!("-{}ay", &first_character); + portion = format!("-{}ay", &first_character); } for (pos, char) in s.char_indices() { - if pos == 0 && starts_with_vowel { - continue - } else { - + if pos == 0 && !starts_with_vowel { + continue; } + latinised.push(char); } + latinised.push_str(&portion); latinised } #[cfg(test)] mod test { use super::*; + #[test] - fn test_pig_latin() { - let string = "arust"; + fn test_pig_latin_start_with_vowel() { + let string = "apple"; let result = pig_latin(string); - println!("{}", result); + assert_eq!(result, "apple-hay"); + } + + #[test] + fn test_pig_latin_start_with_consonant() { + let string = "first"; + let result = pig_latin(string); + assert_eq!(result, "irst-fay"); + } + + #[test] + fn test_pig_latin_empty_string() { + let string = ""; + let result = pig_latin(string); + assert_eq!(result, string) } } From 04acd1a28ee31e79a347b09ff270ea4d85157da6 Mon Sep 17 00:00:00 2001 From: Daniel Tomlinson Date: Wed, 25 Nov 2020 01:41:42 +0000 Subject: [PATCH 4/4] Updating todo --- todo.todo | 1 + 1 file changed, 1 insertion(+) diff --git a/todo.todo b/todo.todo index 826f8e5..15c5b90 100644 --- a/todo.todo +++ b/todo.todo @@ -2,3 +2,4 @@ Documentation: ☐ Shadowing + Creating new Strings from iPhone ✔ Working with Hashmaps using Mode example @done(20-11-20 22:54) ☐ Convert notes to Trilium + ☐ Document the pig latin, iterating over a stirng + methods used.