From b238c8330cc1c16962345e12c7f14f10d6a5b4c9 Mon Sep 17 00:00:00 2001 From: rikeroleg Date: Mon, 4 Dec 2017 19:37:44 -0500 Subject: [PATCH 1/2] it only took all day --- src/main/java/io/zipcoder/InputReader.java | 37 ++++++++++++ src/main/java/io/zipcoder/Problem6.java | 64 +++++++++++++++++++++ src/test/java/io/zipcoder/Problem6Test.java | 34 +++++++++++ 3 files changed, 135 insertions(+) create mode 100644 src/main/java/io/zipcoder/InputReader.java diff --git a/src/main/java/io/zipcoder/InputReader.java b/src/main/java/io/zipcoder/InputReader.java new file mode 100644 index 0000000..ab3a736 --- /dev/null +++ b/src/main/java/io/zipcoder/InputReader.java @@ -0,0 +1,37 @@ +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..54706ac 100644 --- a/src/main/java/io/zipcoder/Problem6.java +++ b/src/main/java/io/zipcoder/Problem6.java @@ -1,4 +1,68 @@ 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 Hundred"); + 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){ + String militaryTimeInWords = inputHour(input) + " and " + inputMinute(input) + " Hours"; + return militaryTimeInWords; + } + } + + diff --git a/src/test/java/io/zipcoder/Problem6Test.java b/src/test/java/io/zipcoder/Problem6Test.java index d262e88..e11d1c5 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("11:30pm"); + Assert.assertEquals(expected, actual); + } } From e88471ec7148735f52afdb64ecf2db2b3e0a1f70 Mon Sep 17 00:00:00 2001 From: rikeroleg Date: Tue, 5 Dec 2017 18:11:29 -0500 Subject: [PATCH 2/2] fixed the bug with the 00 minutes --- src/main/java/io/zipcoder/InputReader.java | 1 + src/main/java/io/zipcoder/Problem6.java | 16 ++++++++++++---- src/test/java/io/zipcoder/Problem6Test.java | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/main/java/io/zipcoder/InputReader.java b/src/main/java/io/zipcoder/InputReader.java index ab3a736..554a794 100644 --- a/src/main/java/io/zipcoder/InputReader.java +++ b/src/main/java/io/zipcoder/InputReader.java @@ -4,6 +4,7 @@ import java.util.regex.Pattern; public class InputReader { + public String hourRegex(String input ) { String hours = null; Pattern pattern = Pattern.compile("\\d*"); diff --git a/src/main/java/io/zipcoder/Problem6.java b/src/main/java/io/zipcoder/Problem6.java index 54706ac..1b24bab 100644 --- a/src/main/java/io/zipcoder/Problem6.java +++ b/src/main/java/io/zipcoder/Problem6.java @@ -8,7 +8,7 @@ public class Problem6 { public String hourTable(String hour){ HashMap hourMap = new HashMap(); - hourMap.put("0", "Zero Hundred"); + hourMap.put("0", "Zero Zero"); hourMap.put("1", "Zero One Hundred"); hourMap.put("2", "Zero Two Hundred"); hourMap.put("3","Zero Three Hundred"); @@ -58,9 +58,17 @@ public String inputMinute(String input){ return minuteVariable; } - public String timeIntoWords(String input){ - String militaryTimeInWords = inputHour(input) + " and " + inputMinute(input) + " Hours"; - return militaryTimeInWords; + + 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 e11d1c5..d90c5b0 100644 --- a/src/test/java/io/zipcoder/Problem6Test.java +++ b/src/test/java/io/zipcoder/Problem6Test.java @@ -32,7 +32,7 @@ public void amPmRegexTest(){ @Test public void militaryTimeInWords(){ String expected = "Eleven Hundred and Thirty Hours"; - String actual = main.timeIntoWords("11:30pm"); + String actual = main.timeIntoWords("9:30am"); Assert.assertEquals(expected, actual); } }