HackerRank The Time in Words problem solution

In this HackerRank The Time in Words problem you have Given the time in numerals we may convert it into words.

HackerRank The Time in Words problem solution

Problem solution in Python programming.

minutes = ['zero','one','two','three','four','five',
           'six','seven','eight','nine','ten',
           'eleven','twelve','thirteen','fourteen',
           'fifteen','sixteen','seventeen','eighteen',
           'nineteen','twenty','twenty one', 'twenty two',
           'twenty three','twenty four','twenty five',
           'twenty six','twenty seven','twenty eight',
           'twenty nine', 'thirty']
hours = ['zero','one','two','three','four','five',
         'six','seven','eight','nine','ten','eleven','twelve']

H = int(input())
M = int(input())

if M == 0:
    print(hours[H],"o' clock")
elif M == 15:
    print("quarter past",hours[H])
elif M == 30:
    print("half past",hours[H])
elif M == 45:
    if H == 12:
        print("quarter to",hours[1])
    else:
        print("quarter to",hours[H+1])
elif M > 0 and M < 30:
    print(minutes[M],"minutes past",hours[H])
elif M > 30 and M < 60:
    if H == 12:
        print(minutes[60-M],"minutes to",hours[1])
    else:
        print(minutes[60-M],"minutes to",hours[H+1])

Problem solution in Java Programming.

import java.io.*;
import java.util.*;

public class Solution {

    public static void main(String[] args) {
        
		Scanner sc = new Scanner(System.in);
		Integer hour = Integer.parseInt(sc.nextLine());
		Integer min = Integer.parseInt(sc.nextLine());
		String[] numNames = { "", " one", " two", " three", " four", " five",
				" six", " seven", " eight", " nine", " ten", " eleven",
				" twelve", " thirteen", " fourteen", " fifteen", " sixteen",
				" seventeen", " eighteen", " nineteen" };
		String[] tensNames = { "", " ten", " twenty", " thirty", " fourty",
				" fifty", " sixty", " seventy", " eighty", " ninety" };
		String sepString1 = " minutes past ";
		String sepString2 = " minutes to ";
		String minString = "";
		if (min == 0)
			System.out.println(numNames[hour].trim() + " o' clock");
		else if (min == 15)
			System.out.println("quarter past " + numNames[hour].trim());
		else if (min < 30) {
			if (min == 1)
				sepString1 = " minute past ";
			if (min < 20)
				minString = numNames[min % 20];
			else {
				minString = numNames[min % 10];
				min /= 10;
				minString = tensNames[min % 10] + minString;
			}
			System.out.println(minString.trim() + sepString1
					+ numNames[hour].trim());
		} else if (min == 30)
			System.out.println("half past " + numNames[hour].trim());
		else if (min == 45)
			System.out.println("quarter to "
					+ numNames[hour + 1 < 12 ? hour + 1 : 1].trim());
		else if (min > 30) {
			min = 60 - min;
			if (min == 1)
				sepString2 = " minute to ";
			if (min < 20)
				minString = numNames[min % 20];
			else {
				minString = numNames[min % 10];
				min /= 10;
				minString = tensNames[min % 10] + minString;
			}
			System.out.println(minString.trim() + sepString2
					+ numNames[hour + 1 <= 12 ? hour + 1 : 1].trim());
		}
    }
}

Problem solution in C++ programming.

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

string nums[30] = {
"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"
};

int main() {
    int H, M;
    cin >> H >> M;
    string joiner;
    if (M == 0){
        cout << nums[H-1] << " o' clock";
        return 0;
    }
    else if (M > 30) {
        joiner = "to";
        M = 60 - M;
        H %= 12;
        H ++;
    } else {
        joiner = "past";
    }
    string min = " minutes ";
    if (M == 1)
        min = " minute ";
    if (M == 15 || M == 30) {
        min = " ";
    }
    cout << nums[M-1] << min << joiner << " " << nums[H-1];
    /* Enter your code here. Read input from STDIN. Print output to STDOUT */   
    return 0;
}

Problem solution in C programming.

#include <stdio.h>

const char *min[] = {
    "",
    "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 senen",
    "twenty eight",
    "twenty nine",
    "half past",
};

//#define stMin (sizeof(min) / sizeof(const char *))

int main() {
    int H, M;
    
    //int T;
    //scanf(" %d", &T);
    //while(T--) {
        
    scanf(" %d %d", &H, &M);
    //printf("n%d:%d = ", H, M);

    if(M <= 30) {
        if(M == 0)       printf("%s o' clock", min[H]);
        else if(M == 1)  printf("%s minute past %s", min[M], min[H]);
        else if(M == 15) printf("quarter past %s", min[H]);
        else if(M == 30) printf("half past %s", min[H]);
        else             printf("%s minutes past %s", min[M], min[H]);
    }
    else {
        M = 60 - M;
        if(++H == 13)    H = 1;
        
        if(M == 1)       printf("%s minute to %s", min[M], min[H]);
        else if(M == 15) printf("quarter to %s", min[H]);
        else             printf("%s minutes to %s", min[M], min[H]);
    }
    
    //printf("n");

    //}
    return 0;
}

Problem solution in JavaScript programming.

function getInt(number) {
    return parseInt(number, 10);
}

function hTranslator(number) {
    var words;   
    
    number = getInt(number);
    
    switch (number) {
        case 1:
            words = 'one';
            break;
        case 2:
            words = 'two';
            break;
        case 3:
            words = 'three';
            break;
        case 4:
            words = 'four';
            break;
        case 5:
            words = 'five';
            break;
        case 6:
            words = 'six';
            break;
        case 7:
            words = 'seven';
            break;
        case 8:
            words = 'eight';
            break;
        case 9:
            words = 'nine';
            break;
        case 10:
            words = 'ten';
            break;
        case 11:
            words = 'eleven';
            break;
        case 12:
            words = 'twelve';
            break;
    }
    
    return words;
}

function mTranslator(number) {
    var words = [];        
    
    number = getInt(number);
    
    if (number === 30) {
        words.push('half');
    } else if (number > 19) {
        words.push('twenty');
        number -= 20;
    } else if (number > 9) {
        switch (number) {
            case 10:
                words.push('ten');
                break;
            case 11:
                words.push('eleven');
                break;
            case 12:
                words.push('twelve');
                break;
            case 13:
                words.push('thirteen');
                break;
            case 14:
                words.push('fourteen');
                break;
            case 15:
                words.push('quarter');
                break;
            case 16:
                words.push('sixteen');
                break;
            case 17:
                words.push('seventeen');
                break;
            case 18:
                words.push('eightteen');
                break;
            case 19:
                words.push('nineteen');
                break;
        }
    }
    
    if (number > 19 || number < 10) {
        switch (number) {
            case 1:
                words.push('one');
                break;
            case 2:
                words.push('two');
                break;
            case 3:
                words.push('three');
                break;
            case 4:
                words.push('four');
                break;
            case 5:
                words.push('five');
                break;
            case 6:
                words.push('six');
                break;
            case 7:
                words.push('seven');
                break;
            case 8:
                words.push('eight');
                break;
            case 9:
                words.push('nine');
                break;
        }
    }
    
    return words.join(' ');
}

function processData(input) {
    var data = input.split(/n/),
        hours = getInt(data[0].trim()),
        minutes = getInt(data[1].trim()),
        middle,
        timeString = [];
    
    if (minutes == 0) {
        timeString = hTranslator(hours) + ' o' clock';
    } else {
        if (minutes > 30) {
            if (hours === 12) {
                hours = 1;
            } else {
                ++hours;
            }
            minutes = 60 - minutes;
            middle = 'to';
            //timeString = 'to ' + hTranslator(hours);
        } else {
            middle = 'past';
            //timeString = 'past ' + hTranslator(hours);
        }
        if ([15, 30].indexOf(minutes) === -1) {
            //timeString = ' minute' + (minutes === 1 ? ' ' : 's ') + timeString;
        }
        
        timeString.push(mTranslator(minutes));
        if ([15, 30].indexOf(minutes) === -1) {
            timeString.push('minute' + (minutes === 1 ? '' : 's'));
        }
        timeString.push(middle);
        timeString.push(hTranslator(hours));
        
        timeString = timeString.join(' ');
    }
    
    process.stdout.write(timeString);
} 

process.stdin.resume();
process.stdin.setEncoding("ascii");
_input = "";
process.stdin.on("data", function (input) {
    _input += input;
});

process.stdin.on("end", function () {
   processData(_input);
});