diff --git a/src/main/java/io/zipcoder/InputReader.java b/src/main/java/io/zipcoder/InputReader.java new file mode 100644 index 0000000..554a794 --- /dev/null +++ b/src/main/java/io/zipcoder/InputReader.java @@ -0,0 +1,38 @@ +package io.zipcoder; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class InputReader { + + public String hourRegex(String input ) { + String hours = null; + Pattern pattern = Pattern.compile("\\d*"); + Matcher m = pattern.matcher(input); + if(m.find()) { + hours = m.group(0); + } + return hours; + } + + public String minuteRegex(String input){ + String minutes = null; + Pattern pattern = Pattern.compile(":\\d+"); + Matcher matcher = pattern.matcher(input); + if(matcher.find()){ + minutes = matcher.group(0); + } + minutes = minutes.substring(1); + return minutes; + } + + public String amPmRegex(String input){ + String amPm = null; + Pattern pattern = Pattern.compile("[p|a]m", Pattern.CASE_INSENSITIVE); + Matcher matcher = pattern.matcher(input); + if(matcher.find()){ + amPm = matcher.group(0); + } + return amPm; + } +} diff --git a/src/main/java/io/zipcoder/Problem6.java b/src/main/java/io/zipcoder/Problem6.java index 4ee4e64..1b24bab 100644 --- a/src/main/java/io/zipcoder/Problem6.java +++ b/src/main/java/io/zipcoder/Problem6.java @@ -1,4 +1,76 @@ package io.zipcoder; +import java.util.HashMap; + public class Problem6 { + + InputReader inputTime = new InputReader(); + + public String hourTable(String hour){ + HashMap hourMap = new HashMap(); + hourMap.put("0", "Zero Zero"); + hourMap.put("1", "Zero One Hundred"); + hourMap.put("2", "Zero Two Hundred"); + hourMap.put("3","Zero Three Hundred"); + hourMap.put("4", "Zero Four Hundred"); + hourMap.put("5", "Zero Five Hundred"); + hourMap.put("6", "Zero Six Hundred"); + hourMap.put("7", "Zero Seven Hundred"); + hourMap.put("8", "Zero Eight Hundred"); + hourMap.put("9", "Zero Nine Hundred"); + hourMap.put("10", "Ten Hundred"); + hourMap.put("11", "Eleven Hundred"); + hourMap.put("12", "Twelve Hundred"); + hourMap.put("13", "Thirteen Hundred"); + hourMap.put("14", "Fourteen Hundred"); + hourMap.put("15", "Fifteen Hundred"); + hourMap.put("16", "Sixteen Hundred"); + hourMap.put("17", "Seventeen Hundred"); + hourMap.put("18", "Eighteen Hundred"); + hourMap.put("19", "Nineteen Hundred"); + + String hourTxt = hourMap.get(hour); + return hourTxt; + } + + public String minutesTable(String minute){ + HashMap minutesMap = new HashMap(); + minutesMap.put("01", "Zero One"); + minutesMap.put("02", "Zero Two"); + minutesMap.put("03", "Zero Three"); + minutesMap.put("11", "Eleven"); + minutesMap.put("30", "Thirty"); + minutesMap.put("22", "Twenty Two"); + + String minuteTxt = minutesMap.get(minute); + return minuteTxt; + } + + public String inputHour(String input){ + String hour = inputTime.hourRegex(input); + String hourVariable = hourTable(hour); + return hourVariable; + } + + public String inputMinute(String input){ + String minute = inputTime.minuteRegex(input); + String minuteVariable = minutesTable(minute); + return minuteVariable; + } + + + public String timeIntoWords(String input)throws NumberFormatException{ + if (inputTime.minuteRegex(input).equals("00") ){ + String minutesZero = inputHour(input) + " Hours"; + return minutesZero; + } + else{ + String minutesNotZero = inputHour(input) + " and " + inputMinute(input) + " Hours"; + return minutesNotZero; + + } + } + } + + diff --git a/src/test/java/io/zipcoder/Problem6Test.java b/src/test/java/io/zipcoder/Problem6Test.java index d262e88..d90c5b0 100644 --- a/src/test/java/io/zipcoder/Problem6Test.java +++ b/src/test/java/io/zipcoder/Problem6Test.java @@ -1,4 +1,38 @@ package io.zipcoder; +import org.junit.Assert; +import org.junit.Test; + public class Problem6Test { + InputReader problem = new InputReader(); + Problem6 main = new Problem6(); + String input = "12:30am"; + + @Test + public void hourRegexTest(){ + String expected = "12"; + String actual = problem.hourRegex(input); + Assert.assertEquals(expected, actual); + } + + @Test + public void minutesRegexTest(){ + String expected = "30"; + String actual = problem.minuteRegex(input); + Assert.assertEquals(expected, actual); + } + + @Test + public void amPmRegexTest(){ + String expected = "am"; + String actual = problem.amPmRegex(input); + Assert.assertEquals(expected, actual); + } + + @Test + public void militaryTimeInWords(){ + String expected = "Eleven Hundred and Thirty Hours"; + String actual = main.timeIntoWords("9:30am"); + Assert.assertEquals(expected, actual); + } }