Hackerrank - The Time in Words Solution

# 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()))