Spoken Time Code Challenge
by jacobwsmith
JavaScript
console.clear();
const translateTime = (time) => {
const words = ['oh', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'];
const wordsLarge = ['', '', 'twenty', 'thirty', 'fourty', 'fifty'];
const arr = time.split(":");
return "It's " + arr.map((item, index) => {
if (index === 0) {
// Hour
if(item === '00'){
return words[12];
}
if(+item > 12){
return words[+item - 12];
}
if(+item < 20){
return words[+item];
}
return wordsLarge[item[0]] + words[item[1]];
} else {
// Minute
if(item === '00'){
return;
}
if(item[0] === '0'){
return words[item[0]] + ' ' + words[item[1]] + ' ';
}
if(item[1] === '0'){
return wordsLarge[item[0]] + ' ';
}
if(+item < 20 && +item > 9){
return words[item] + ' ';
}
return wordsLarge[item[0]] + ' ' + words[item[1]] + ' ';
}
}).join(' ') + (arr[0] < 12 ? 'am' : 'pm');
}
/// TESTING
function assertEquals(actual, expected) {
if (actual === expected) {
console.log('PASSED')
} else {
console.log(`FAILED: expected \"${expected}\" but got \"${actual}\"`)
}
}
assertEquals(translateTime("00:00"), "It's twelve am")
assertEquals(translateTime("01:30"), "It's one thirty am")
assertEquals(translateTime("12:05"), "It's twelve oh five pm")
assertEquals(translateTime("14:01"), "It's two oh one pm")
assertEquals(translateTime("20:29"), "It's eight twenty nine pm")
assertEquals(translateTime("21:00"), "It's nine pm")