Hackerrank - The Time in Words Solution
Given the time in numerals we may convert it into words, as shown below:
At , use o' clock. For , use past, and for use to. Note the space between the apostrophe and clock in o' clock. Write a program which prints the time in words for the input given in the format described.
Function Description
Complete the timeInWords function in the editor below. It should return a time string as described.
timeInWords has the following parameter(s):
- h: an integer representing hour of the day
- m: an integer representing minutes after the hour
Input Format
The first line contains , the hours portion The second line contains , the minutes portion
Constraints
Output Format
Print the time in words as described.
Sample Input 0
5
47
Sample Output 0
thirteen minutes to six
Sample Input 1
3
00
Sample Output 1
three o' clock
Sample Input 2
7
15
Sample Output 2
quarter past seven
Solution in Python
def timeInWords(h, m):
n = [
"zero",
"one",
"two",
"three",
"four",
"five",
"six",
"seven",
"eight",
"nine",
"ten",
"eleven",
"twelve",
"thirteen",
"fourteen",
"quarter",
"sixteen",
"seventeen",
"eighteen",
"nineteen",
"twenty",
"twenty one",
"twenty two",
"twenty three",
"twenty four",
"twenty five",
"twenty six",
"twenty seven",
"twenty eight",
"twenty nine",
"half"
]
m = int(m)
h = int(h)
if not m:
return "%s o' clock" % n[h]
if m>30:
m = 60 - m
w = "to"
h = (h+1)%12 or 12
else:
w = "past"
o = " minutes"
if m==1:
o = " minute"
elif not m%15:
o = ""
m = n[m]
h = n[h]
return "%s%s %s %s"%(m,o,w,h)
print(timeInWords(input(), input()))