Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions src/main/java/io/zipcoder/InputReader.java
Original file line number Diff line number Diff line change
@@ -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;
}
}
72 changes: 72 additions & 0 deletions src/main/java/io/zipcoder/Problem6.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,76 @@
package io.zipcoder;

import java.util.HashMap;

public class Problem6 {

InputReader inputTime = new InputReader();

public String hourTable(String hour){
HashMap<String, String> hourMap = new HashMap<String, String>();
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<String, String> minutesMap = new HashMap<String, String>();
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;

}
}

}


34 changes: 34 additions & 0 deletions src/test/java/io/zipcoder/Problem6Test.java
Original file line number Diff line number Diff line change
@@ -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);
}
}