diff --git a/pom.xml b/pom.xml index 5fd8efa..7584aab 100644 --- a/pom.xml +++ b/pom.xml @@ -7,6 +7,18 @@ io.zipcoder InterviewProblem5 1.0-SNAPSHOT + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.7 + 1.7 + + + + diff --git a/src/main/java/io/zipcoder/Militarizer.java b/src/main/java/io/zipcoder/Militarizer.java new file mode 100644 index 0000000..79e459b --- /dev/null +++ b/src/main/java/io/zipcoder/Militarizer.java @@ -0,0 +1,74 @@ +package io.zipcoder; + +import java.util.HashMap; + +public class Militarizer { + private HashMap teens = new HashMap<>(); + private HashMap firstDigits = new HashMap<>(); + private HashMap secondDigits = new HashMap<>(); + + public Militarizer(){ + buildTeensMap(); + buildFirstDigitsMap(); + buildSecondDigitsMap(); + } + + + public String speaker(String input){ + if(teens.containsKey(input)){ + return teens.get(input); + } + else if (input.charAt(1) == '0'){ + return firstDigits.get(input.substring(0,1)); + } + else{ + return firstDigits.get(input.substring(0,1)) + " " + secondDigits.get(input.substring(1)); + } + } + + + + private void buildTeensMap(){ + teens.put("10", "Ten"); + teens.put("11", "Eleven"); + teens.put("12", "Twelve"); + teens.put("13", "Thirteen"); + teens.put("14", "Fourteen"); + teens.put("15", "Fifteen"); + teens.put("16", "Sixteen"); + teens.put("17", "Seventeen"); + teens.put("18", "Eighteen"); + teens.put("19", "Nineteen"); + } + + private void buildFirstDigitsMap(){ + firstDigits.put("0", "Zero"); + firstDigits.put("2","Twenty"); + firstDigits.put("3","Thirty"); + firstDigits.put("4","Forty"); + firstDigits.put("5","Fifty"); + } + + private void buildSecondDigitsMap(){ + secondDigits.put("0", ""); + secondDigits.put("1", "One"); + secondDigits.put("2", "Two"); + secondDigits.put("3", "Three"); + secondDigits.put("4", "Four"); + secondDigits.put("5", "Five"); + secondDigits.put("6", "Six"); + secondDigits.put("7", "Seven"); + secondDigits.put("8", "Eight"); + secondDigits.put("9", "Nine"); + + + + + + + + + + } + +} diff --git a/src/main/java/io/zipcoder/Problem6.java b/src/main/java/io/zipcoder/Problem6.java index 4ee4e64..7f84345 100644 --- a/src/main/java/io/zipcoder/Problem6.java +++ b/src/main/java/io/zipcoder/Problem6.java @@ -1,4 +1,14 @@ package io.zipcoder; public class Problem6 { + + public String timeConverter(String time){ + Militarizer converter = new Militarizer(); + + String [] stepOne = TimeConverter.splitTime(time); + String [] stepTwo = TimeConverter.convertTime(stepOne); + + return converter.speaker(stepTwo[0]) + " Hundred and " + converter.speaker(stepTwo[1]) + " Hours"; + } + } diff --git a/src/main/java/io/zipcoder/TimeConverter.java b/src/main/java/io/zipcoder/TimeConverter.java new file mode 100644 index 0000000..fe67604 --- /dev/null +++ b/src/main/java/io/zipcoder/TimeConverter.java @@ -0,0 +1,32 @@ +package io.zipcoder; + +import static java.lang.Integer.parseInt; + +public class TimeConverter { + + public static String[] splitTime(String time){ + String[] stepOne = time.split(":"); + String[] stepTwo = {stepOne[1].substring(0,2), stepOne[1].substring(2)}; + String[] output = {stepOne[0],stepTwo[0],stepTwo[1]}; + if(output[0].length()==1){ + output[0] = "0" + output[0]; + } + + return output; + } + + public static String[] convertTime(String [] input){ + if(input[2].equals("pm")){ + Integer workingInt = parseInt(input[0]); + workingInt +=12; + String[] output = {workingInt.toString(),input[1]}; + return output; + } + + else{ + String[] output = {input[0],input[1]}; + return output; + } + } + +} diff --git a/src/test/java/io/zipcoder/MilitarizerTest.java b/src/test/java/io/zipcoder/MilitarizerTest.java new file mode 100644 index 0000000..cea9d90 --- /dev/null +++ b/src/test/java/io/zipcoder/MilitarizerTest.java @@ -0,0 +1,56 @@ +package io.zipcoder; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +public class MilitarizerTest { + + Militarizer test; + + @Before + public void setup(){ + test = new Militarizer(); + } + + + @Test + public void SpeakerTest(){ + //Given + String input = "11"; + + //When + String expected = "Eleven"; + String actual = test.speaker(input); + + //Then + Assert.assertEquals(expected,actual); + } + + @Test + public void SpeakerTestTwo(){ + //Given + String input = "05"; + + //When + String expected = "Zero Five"; + String actual = test.speaker(input); + + //Then + Assert.assertEquals(expected,actual); + } + + @Test + public void SpeakerTestThree(){ + //Given + String input = "30"; + + //When + String expected = "Thirty"; + String actual = test.speaker(input); + + //Then + Assert.assertEquals(expected,actual); + } + +} diff --git a/src/test/java/io/zipcoder/Problem6Test.java b/src/test/java/io/zipcoder/Problem6Test.java index d262e88..6808781 100644 --- a/src/test/java/io/zipcoder/Problem6Test.java +++ b/src/test/java/io/zipcoder/Problem6Test.java @@ -1,4 +1,80 @@ package io.zipcoder; +import org.junit.Assert; +import org.junit.Test; + public class Problem6Test { + + + @Test + public void timeTestOne(){ + //Given + Problem6 tester = new Problem6(); + String input = "1:30pm"; + + //When + String expected = "Thirteen Hundred and Thirty Hours"; + String actual = tester.timeConverter(input); + + //Then + Assert.assertEquals(expected,actual); + } + + @Test + public void timeTestTwo(){ + //Given + Problem6 tester = new Problem6(); + String input = "1:30am"; + + //When + String expected = "Zero One Hundred and Thirty Hours"; + String actual = tester.timeConverter(input); + + //Then + Assert.assertEquals(expected,actual); + } + + @Test + public void timeTestThree(){ + //Given + Problem6 tester = new Problem6(); + String input = "2:22pm"; + + //When + String expected = "Fourteen Hundred and Twenty Two Hours"; + String actual = tester.timeConverter(input); + + //Then + Assert.assertEquals(expected,actual); + } + + @Test + public void timeTestFour(){ + //Given + Problem6 tester = new Problem6(); + String input = "2:11am"; + + //When + String expected = "Zero Two Hundred and Eleven Hours"; + String actual = tester.timeConverter(input); + + //Then + Assert.assertEquals(expected,actual); + } + + @Test + public void timeTestFive(){ + //Given + Problem6 tester = new Problem6(); + String input = "10:02am"; + + //When + String expected = "Ten Hundred and Zero Two Hours"; + String actual = tester.timeConverter(input); + + //Then + Assert.assertEquals(expected,actual); + } + + } diff --git a/src/test/java/io/zipcoder/TimeConverterTest.java b/src/test/java/io/zipcoder/TimeConverterTest.java new file mode 100644 index 0000000..43e35ee --- /dev/null +++ b/src/test/java/io/zipcoder/TimeConverterTest.java @@ -0,0 +1,60 @@ +package io.zipcoder; + +import org.junit.Assert; +import org.junit.Test; + +public class TimeConverterTest { + + @Test + public void timeSplitTestOne(){ + //Given + String input = "1:30pm"; + + //When + String [] expected = {"01","30","pm"}; + String [] actual = TimeConverter.splitTime(input); + + //Then + Assert.assertArrayEquals(expected,actual); + } + + @Test + public void timeSplitTestTwo(){ + //Given + String input = "12:30pm"; + + //When + String [] expected = {"12","30","pm"}; + String [] actual = TimeConverter.splitTime(input); + + //Then + Assert.assertArrayEquals(expected,actual); + } + + @Test + public void timeConvertTestOne() { + //Given + String [] input = {"01","30","pm"}; + + //When + String [] expected = {"13","30"}; + String [] actual = TimeConverter.convertTime(input); + + //Then + Assert.assertArrayEquals(expected,actual); + } + + @Test + public void timeConvertTestTwo() { + //Given + String [] input = {"01","30","am"}; + + //When + String [] expected = {"01","30"}; + String [] actual = TimeConverter.convertTime(input); + + //Then + Assert.assertArrayEquals(expected,actual); + } + +}