Adding final pig latin

This commit is contained in:
2020-11-25 01:41:31 +00:00
parent 8ac081813c
commit 77daa12e47
2 changed files with 37 additions and 23 deletions

View File

@@ -6,10 +6,15 @@ mod pig_latin;
fn main() { fn main() {
// Stats // Stats
println!("Stats");
let data = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2]; let data = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2];
let mut numbers = stats::NewStatsCalculator::from_vec(&data); let mut numbers = stats::NewStatsCalculator::from_vec(&data);
println!("Data: {:?}", numbers); println!("Data: {:?}", numbers);
println!("Mean: {:?}", numbers.get_mean()); println!("Mean: {:?}", numbers.get_mean());
println!("Median: {:?}", numbers.get_median()); println!("Median: {:?}", numbers.get_median());
println!("Mode: {:?}", numbers.get_mode()); println!("Mode: {:?}", numbers.get_mode());
println!("\nPig Latin");
println!("{}", pig_latin::pig_latin("rustacian"));
println!("{}", pig_latin::pig_latin("awesome"));
} }

View File

@@ -1,45 +1,54 @@
// Take a &str pub fn pig_latin(string: &str) -> String {
// - 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 {
let s = String::from(string); let s = String::from(string);
let mut portion = String::new();
let mut latinised = String::new(); let mut latinised = String::new();
let vowels = ['a', 'e', 'i', 'o', 'u'];
let mut starts_with_vowel = false; 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(); let first_character = s.chars().next().unwrap();
if vowels.contains(&first_character) { if vowels.contains(&first_character) {
latinised = format!("{}-hay", &s); portion.push_str("-hay");
starts_with_vowel = true; starts_with_vowel = true;
} else { } else {
latinised = format!("-{}ay", &first_character); portion = format!("-{}ay", &first_character);
} }
for (pos, char) in s.char_indices() { for (pos, char) in s.char_indices() {
if pos == 0 && starts_with_vowel { if pos == 0 && !starts_with_vowel {
continue continue;
} else {
} }
latinised.push(char);
} }
latinised.push_str(&portion);
latinised latinised
} }
#[cfg(test)] #[cfg(test)]
mod test { mod test {
use super::*; use super::*;
#[test] #[test]
fn test_pig_latin() { fn test_pig_latin_start_with_vowel() {
let string = "arust"; let string = "apple";
let result = pig_latin(string); 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)
} }
} }