사람이 읽을 수 있는 숫자

7456 단어
작업은 주어진 숫자를 읽을 수 있는 문자열로 변환하는 toReadable 함수를 구현하는 것입니다.

예를 들어:

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];
    }
}

좋은 웹페이지 즐겨찾기