diff --git a/.idea/misc.xml b/.idea/misc.xml index a2de11b..5d4b022 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -4,7 +4,7 @@ - + \ 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..0b2d863 100644 --- a/clean-code-challanges/src/main/java/Acronym.java +++ b/clean-code-challanges/src/main/java/Acronym.java @@ -1,18 +1,27 @@ +package main.java; + +import static java.util.Objects.requireNonNull; +import static java.util.stream.Collectors.joining; /** * Convert a phrase to its acronym. - * + *

* Techies love their TLA (Three Letter Acronyms)! - * + *

* Help generate some jargon by writing a program that converts a long name like Portable Network Graphics to its acronym (PNG). */ -class Acronym { +public class Acronym { - Acronym(String phrase) { + String insert; + public Acronym(String phrase) { + insert = phrase; } - - String get() { - return null; + public String get() { + insert = insert.replaceAll("[-]", " "); + String[] words = insert.replaceAll("[^a-zA-Z ]", "").toUpperCase().split("\\s+"); + String acronym = ""; + for (int i = 0; i < words.length; i++) + acronym += words[i].charAt(0); + return acronym; } - } diff --git a/clean-code-challanges/src/main/java/Anagram.java b/clean-code-challanges/src/main/java/Anagram.java index 9930cd0..b095bba 100644 --- a/clean-code-challanges/src/main/java/Anagram.java +++ b/clean-code-challanges/src/main/java/Anagram.java @@ -1,5 +1,10 @@ +package main.java; + +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; + /** * Given a word and a list of possible anagrams, select the correct sublist. * @@ -7,11 +12,32 @@ */ public class Anagram { + private String word; + public Anagram(String word) { + this.word = word; } + public String sortLetters(String word){ + char[] letterArray = word.toLowerCase().toCharArray(); + Arrays.sort(letterArray); + String sorted = new String (letterArray); + return sorted; + } public List match(List candidates) { - return null; + List matchingWords = new ArrayList<>(); + + String sortedWord = sortLetters(this.word); + + for (String word: candidates){ + String sortedWordMatchingList = sortLetters(word); + if (sortedWord.equals(sortedWordMatchingList) && !this.word.toLowerCase().equals(word.toLowerCase())){ + matchingWords.add(word); + } + } + return matchingWords; } } + + diff --git a/clean-code-challanges/src/main/java/IsogramChecker.java b/clean-code-challanges/src/main/java/IsogramChecker.java index 00d4c74..1d1bd4c 100644 --- a/clean-code-challanges/src/main/java/IsogramChecker.java +++ b/clean-code-challanges/src/main/java/IsogramChecker.java @@ -1,3 +1,5 @@ +package main.java; + /** * Determine if a word or phrase is an isogram. * @@ -13,10 +15,16 @@ * * The word isograms, however, is not an isogram, because the s repeats. */ -class IsogramChecker { +public class IsogramChecker { - boolean isIsogram(String phrase) { - throw new UnsupportedOperationException("Delete this statement and write your own implementation."); - } + public boolean isIsogram(String phrase) { + //throw new UnsupportedOperationException("Delete this statement and write your own implementation."); + //} + if (phrase.length() > 1) { + phrase = phrase.toLowerCase().replaceAll(" ", "").replaceAll("-", ""); + return phrase.length() == phrase.chars().distinct().count(); + } + return true; + } } diff --git a/clean-code-challanges/src/main/java/PigLatinTranslator.java b/clean-code-challanges/src/main/java/PigLatinTranslator.java index 602a04d..a9d0deb 100644 --- a/clean-code-challanges/src/main/java/PigLatinTranslator.java +++ b/clean-code-challanges/src/main/java/PigLatinTranslator.java @@ -1,3 +1,8 @@ +package main.java; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + /** * Implement a program that translates from English to Pig Latin. * @@ -17,7 +22,46 @@ */ public class PigLatinTranslator { - public String translate(String englishPhrase) { - return null; + public static String translate (String englishPhrase){ + char ch = englishPhrase.charAt(0); + + Pattern startWithSqu = Pattern.compile("^squ"); + Pattern startWithTh = Pattern.compile("^th"); + Pattern startWithThr = Pattern.compile("^thr"); + Pattern startWithSch = Pattern.compile("^sch"); + Pattern startWithYt = Pattern.compile("^yt"); + Pattern startWithXr = Pattern.compile("^xr"); + + String s; + if (ch=='a' || ch=='e' || ch=='i' || ch=='o' || ch=='u') { + s = englishPhrase + "ay"; + } else if (ch=='c') { + s = englishPhrase.substring(2) + "chay"; + + } else if (ch=='q') { + s = englishPhrase.substring(2) + "quay"; + + } else if (startWithSqu.matcher(englishPhrase).find()) { + s = englishPhrase.substring(3) + "squay"; + + } else if (startWithThr.matcher(englishPhrase).find()) { + s = englishPhrase.substring(3) + "thray"; + + } else if (startWithTh.matcher(englishPhrase).find()) { + s = englishPhrase.substring(2) + "thay"; + + } else if (startWithSch.matcher(englishPhrase).find()) { + s = englishPhrase.substring(3) + "schay"; + + } else if (startWithYt.matcher(englishPhrase).find()) { + s = englishPhrase + "ay"; + + } else if (startWithXr.matcher(englishPhrase).find()) { + s = englishPhrase + "ay"; + + } else { + s = englishPhrase.substring(1) + englishPhrase.charAt(0) + "ay"; + } + return s; } } diff --git a/clean-code-challanges/src/test/java/PigLatinTranslatorTest.java b/clean-code-challanges/src/test/java/PigLatinTranslatorTest.java index 8fed0ee..32ed377 100644 --- a/clean-code-challanges/src/test/java/PigLatinTranslatorTest.java +++ b/clean-code-challanges/src/test/java/PigLatinTranslatorTest.java @@ -1,3 +1,6 @@ +package test.java; + +import main.java.PigLatinTranslator; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; @@ -67,5 +70,4 @@ public PigLatinTranslatorTest(String englishPhrase, String pigLatinTranslation) public void test() { assertEquals(pigLatinTranslation, new PigLatinTranslator().translate(englishPhrase)); } - } diff --git a/clean-code.iml b/clean-code.iml index 3b18d94..682987b 100644 --- a/clean-code.iml +++ b/clean-code.iml @@ -4,6 +4,7 @@ + @@ -17,5 +18,15 @@ + + + + + + + + + + \ No newline at end of file