사람이 읽을 수 있는 숫자
예를 들어:
toReadable(1); // Will return 'one'
toReadable(997); //will return 'nine hundred ninety seven'
이런 종류의 것을 좋아하는 사람들을 위한 코딩 문제가 있습니다. 지정된 정수의 사람이 읽을 수 있는 문자열 표현을 반환하는 함수의 구현을 살펴보겠습니다.
무의미한 연습처럼 보일 수 있지만 이러한 종류의 알고리즘에 대한 실제 응용 프로그램이 많이 있습니다(10억에 달하는 숫자를 지원하는 것은 과잉일 수 있음).
대답
function toReadable(number) {
let dozens;
let words = {
0: 'zero',
1: 'one',
2: 'two',
3: 'three',
4: "four",
5: 'five',
6: 'six',
7: "seven",
8: 'eight',
9: 'nine',
10: 'ten',
11: 'eleven',
12: 'twelve',
13: 'thirteen',
14: 'fourteen',
15: 'fifteen',
16: 'sixteen',
17: 'seventeen',
19: 'nineteen',
18: 'eighteen',
};
if (20 <= number) {
dozens = {
20: 'twenty',
30: 'thirty',
40: 'forty',
50: 'fifty',
60: 'sixty',
70: 'seventy',
80: 'eighty',
90: 'ninety',
};
const num = String(number).split('');
if (num.length === 2)
if (number % 10 == 0) {
return dozens[number];
} else {
if (num[0] == 2) {
return 'twenty' + ' ' + words[num[1]];
}
if (num[0] == 3) {
return 'thirty' + ' ' + words[num[1]];
}
if (num[0] == 4) {
return 'forty' + ' ' + words[num[1]];
}
if (num[0] == 5) {
return 'fifty' + ' ' + words[num[1]];
}
if (num[0] == 6) {
return 'sixty' + ' ' + words[num[1]];
}
if (num[0] == 7) {
return 'seventy' + ' ' + words[num[1]];
}
if (num[0] == 8) {
return 'eighty' + ' ' + words[num[1]];
}
if (num[0] == 9) {
return 'ninety' + ' ' + words[num[1]];
}
}
if (num.length === 3)
if (number % 100 != 0) {
if (number % 10 === 0)
if (num[1] != 2) {
if (num[1] != 3) {
if (num[1] == 4) {
return words[parseInt(num[0])] + ' hundred ' + dozens[40];
}
if (num[1] == 5) {
return words[parseInt(num[0])] + ' hundred ' + dozens[50];
}
if (num[1] == 6) {
return words[parseInt(num[0])] + ' hundred ' + dozens[60];
}
if (num[1] == 7) {
return words[parseInt(num[0])] + ' hundred ' + dozens[70];
}
if (num[1] == 8) {
return words[parseInt(num[0])] + ' hundred ' + dozens[80];
}
if (num[1] == 9) {
return words[parseInt(num[0])] + ' hundred ' + dozens[90];
}
} else {
return words[parseInt(num[0])] + ' hundred ' + dozens[30];
}
} else {
return words[parseInt(num[0])] + ' hundred ' + dozens[20];
}
if (num[1] == 0) {
return words[parseInt(num[0])] + ' hundred ' + words[num[2]];
}
if (num[1] == 1) {
if (num[2] == 0) {
return words[parseInt(num[0])] + ' hundred ' + words[10];
}
if (num[2] == 1) {
return words[parseInt(num[0])] + ' hundred ' + words[11];
}
if (num[2] == 2) {
return words[parseInt(num[0])] + ' hundred ' + words[12];
}
if (num[2] == 3) {
return words[parseInt(num[0])] + ' hundred ' + words[13];
}
if (num[2] == 4) {
return words[parseInt(num[0])] + ' hundred ' + words[14];
}
if (num[2] == 5) {
return words[parseInt(num[0])] + ' hundred ' + words[15];
}
if (num[2] == 6) {
return words[parseInt(num[0])] + ' hundred ' + words[16];
}
if (num[2] == 7) {
return words[parseInt(num[0])] + ' hundred ' + words[17];
}
if (num[2] == 8) {
return words[parseInt(num[0])] + ' hundred ' + words[18];
}
if (num[2] == 9) {
return words[parseInt(num[0])] + ' hundred ' + words[19];
}
}
if (num[1] == 2) {
return words[parseInt(num[0])] + ' hundred ' + dozens[20] + ' ' + words[num[2]];
}
if (num[1] == 3) {
return words[parseInt(num[0])] + ' hundred ' + dozens[30] + ' ' + words[num[2]];
}
if (num[1] == 4) {
return words[parseInt(num[0])] + ' hundred ' + dozens[40] + ' ' + words[num[2]];
}
if (num[1] == 5) {
return words[parseInt(num[0])] + ' hundred ' + dozens[50] + ' ' + words[num[2]];
}
if (num[1] == 6) {
return words[parseInt(num[0])] + ' hundred ' + dozens[60] + ' ' + words[num[2]];
}
if (num[1] == 7) {
return words[parseInt(num[0])] + ' hundred ' + dozens[70] + ' ' + words[num[2]];
}
if (num[1] == 8) {
return words[parseInt(num[0])] + ' hundred ' + dozens[80] + ' ' + words[num[2]];
}
if (num[1] == 9) {
return words[parseInt(num[0])] + ' hundred ' + dozens[90] + ' ' + words[num[2]];
}
} else {
return words[parseInt(num[0])] + ' hundred';
}
} else {
return words[number];
}
}
Reference
이 문제에 관하여(사람이 읽을 수 있는 숫자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/iharnazarov/human-readable-number-49dk텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)