diff --git a/.idea/$PRODUCT_WORKSPACE_FILE$ b/.idea/$PRODUCT_WORKSPACE_FILE$ new file mode 100644 index 0000000..3733e0d --- /dev/null +++ b/.idea/$PRODUCT_WORKSPACE_FILE$ @@ -0,0 +1,19 @@ + + + + + + + 1.8 + + + + + + + + \ No newline at end of file diff --git a/.idea/checkstyle-idea.xml b/.idea/checkstyle-idea.xml deleted file mode 100644 index ab65fd9..0000000 --- a/.idea/checkstyle-idea.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/codeStyleSettings.xml b/.idea/codeStyleSettings.xml deleted file mode 100644 index 5555dd2..0000000 --- a/.idea/codeStyleSettings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml deleted file mode 100644 index fdc392f..0000000 --- a/.idea/jarRepositories.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml deleted file mode 100644 index 1c24f9a..0000000 --- a/.idea/kotlinc.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index a2de11b..e208459 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,10 +1,6 @@ - - - - - + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index ee6671a..aa18f50 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,7 +2,9 @@ - + + + \ No newline at end of file diff --git a/.idea/modules/clean-code-challanges.iml b/.idea/modules/clean-code-challanges.iml deleted file mode 100644 index c492207..0000000 --- a/.idea/modules/clean-code-challanges.iml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 94a25f7..35eb1dd 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/clean-code.iml b/clean-code-01.iml similarity index 57% rename from clean-code.iml rename to clean-code-01.iml index 3b18d94..c48ad5b 100644 --- a/clean-code.iml +++ b/clean-code-01.iml @@ -4,18 +4,10 @@ + - - - - - - - - - - + \ No newline at end of file diff --git a/clean-code-challanges/src/main/java/Acronym.java b/clean-code-challanges/src/main/java/Acronym.java index 5e00939..1044fe1 100644 --- a/clean-code-challanges/src/main/java/Acronym.java +++ b/clean-code-challanges/src/main/java/Acronym.java @@ -7,12 +7,19 @@ */ class Acronym { - Acronym(String phrase) { + private final String phrase; + Acronym(String phrase) { + this.phrase = phrase; } String get() { - return null; + StringBuffer acronym = new StringBuffer(); + String[] words = phrase.trim().split("[\\s-_]+"); + for(String word : words) { + acronym.append(word.toUpperCase().charAt(0)); + } + return acronym.toString(); } } diff --git a/clean-code-challanges/src/main/java/PigLatinTranslator.java b/clean-code-challanges/src/main/java/PigLatinTranslator.java index 602a04d..33c0c4e 100644 --- a/clean-code-challanges/src/main/java/PigLatinTranslator.java +++ b/clean-code-challanges/src/main/java/PigLatinTranslator.java @@ -5,7 +5,7 @@ * but when it's spoken quickly it's really difficult for non-children (and non-native speakers) to understand. * * Rule 1: If a word begins with a vowel sound, add an "ay" sound to the end of the word. - * Please note that "xr" and "yt" at the beginning of a word make vowel sounds (e.g. "xray" -> "xrayay", "yttria" -> "yttriaay"). + * Please note that "xr" and "yt" at the beginning of a word make vowel sounds (e.g. "xray" -> "xrayay", "yttria" -> "yttriaay"). * Rule 2: If a word begins with a consonant sound, move it to the end of the word and then add an "ay" sound to the end of the word. * Consonant sounds can be made up of multiple consonants, a.k.a. a consonant cluster (e.g. "chair" -> "airchay"). * Rule 3: If a word starts with a consonant sound followed by "qu", move it to the end of the word, and then add an "ay" sound to the end of the word (e.g. "square" -> "aresquay"). @@ -15,9 +15,57 @@ * * See http://en.wikipedia.org/wiki/Pig_latin for more details. */ + public class PigLatinTranslator { public String translate(String englishPhrase) { - return null; + String[] words = englishPhrase.split(" "); + String pigLatinPhrase = ""; + for (String word: words) { + if (pigLatinPhrase != "") { + pigLatinPhrase += " "; + } + pigLatinPhrase += translateWord(word); + } + return pigLatinPhrase; + } + + public String translateWord(String word) { + + // If word begins with a vowel, add an "ay" to the end of the word + if(word.startsWith("a") || word.startsWith("e") || word.startsWith("i") || word.startsWith("o") + || word.startsWith("u") || word.startsWith("xr") || word.startsWith("yt")) { + return word + "ay"; + } + + // If word starts with a consonant followed by "qu", + // move it to the end of the word, and then add an "ay" sound to the end of the word (e.g. "square" -> "aresquay") + else if(word.indexOf("qu") == 1) { + word = word.substring(3) + word.substring(0, 1) + "quay"; + } + // word starting with "sch" or "thr" or "th" or "qu" or "ch" --> take first substring and move it to the end, then add "ay" + else if(word.startsWith("sch") || word.startsWith("thr")) { + word = word.substring(3) + word.substring(0, 3) + "ay"; + } + // word starting with "th" or "qu" or "ch" --> take first substring and move it to the end, then add "ay" + else if(word.startsWith("th") || word.startsWith("qu") || word.startsWith("ch")) { + word = word.substring(2) + word.substring(0, 2) + "ay"; + } + + // If word contains a "y" after a consonant cluster or as the second letter in a two letter word + // it makes a vowel sound (e.g. "rhythm" -> "ythmrhay", "my" -> "ymay"). + else if(!(word.startsWith("a") || word.startsWith("e") || word.startsWith("i") || word.startsWith("o") || word.startsWith("u")) && + !(word.startsWith("a") || word.startsWith("e") || word.startsWith("i") || word.startsWith("o") || word.startsWith("u")) && + word.indexOf("y") == 2) { + word = word.substring(2) + word.substring(0, 2) + "ay"; + } + + // If word begins with consonant, move it to the end of the word and then add "ay" to the end of the word + else if(word.substring(0, 1) != "a" || word.substring(0, 1) != "e" || word.substring(0, 1) != "i" + || word.substring(0, 1) != "o" || word.substring(0, 1) != "u") { + word = word.substring(1) + word.substring(0, 1) + "ay"; + } + + return word; } } diff --git a/clean-code-challanges/src/main/main.iml b/clean-code-challanges/src/main/main.iml new file mode 100644 index 0000000..908ad4f --- /dev/null +++ b/clean-code-challanges/src/main/main.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/clean-code-challanges/src/test/test.iml b/clean-code-challanges/src/test/test.iml new file mode 100644 index 0000000..bf10073 --- /dev/null +++ b/clean-code-challanges/src/test/test.iml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file