프로젝트 오일러 # 17 에서 영감을 얻은 것은 이것이 당신의 도전입니다. 숫자를 입력으로 사용하는 전체 프로그램 또는 함수를 작성한 다음 영어로 숫자를 포함하여 계산하는 데 필요한 문자 수를 인쇄하거나 반환하십시오 (1부터 시작). 공백, 쉼표 또는 하이픈은 포함하지 않지만 단어는 포함해야합니다 and. 예를 들어. 342 철자 : Three Hundred and Forty-Two. 23 자 길이입니다.
입력은 양의 정수입니다. 유효하지 않은 입력을 처리 할 필요는 없습니다. 숫자를 영어로 변환하는 내장 또는 라이브러리는 허용되지 않습니다.
다음은 숫자 철자법에 대한 모든 규칙입니다. (참고 : 일부 사람들은 숫자를 철자하는 방법에 대해 다른 규칙을 사용한다는 것을 알고 있습니다. 이것은이 도전의 목적을위한 공식 규칙 일뿐입니다)
1에서 20
하나, 둘, 셋, 넷, 다섯, 여섯, 일곱, 여덟, 아홉, 열, 열한, 열두, 열 세, 열 네, 열 다섯, 열 여섯, 열 일곱, 열 여덟, 열 여덟, 열 여덟, 열 여덟
21에서 99
다음에 가입하십시오 :
스물, 삼십, 사십, 오십, 육십, 일흔, 여든, 구십
이들에게 :
-1, -2, -3, -4, -5, -6, -7, -8, -9,
참고 것을 네 이 유를 하지만 마흔이 되지 않습니다!
예 :
53: Fifty-three
60: sixty
72: seventy-two
99: ninety-nine
100에서 999
위와 같이 몇 백 (1 백, 2 백, 3 백 등), " 및 "및 나머지 수를 쓰십시오 . 및 당신의 편지 점수에 반영 않습니다.
예 :
101: One hundred and one
116: One hundred and sixteen
144: One hundred and forty-four
212: Two hundred and twelve
621: Six Hundred and twenty-one
1,000 ~ 999,999
위와 같이 몇 천 (1 천, 2 천 등), 쉼표, 나머지 수를 적습니다. 수백이 없다면 여전히 and 가 필요합니다 .
예 :
1,101: One thousand, one hundred and one
15,016: Fifteen thousand and sixteen
362,928: Three hundred and sixty-two thousand, nine hundred and twenty-eight
수백만
위와 같이 몇 백만을 쓴 다음 나머지 수를 쓰십시오. "백만"은 6 개의 0 "1,000,000"입니다.
예 :
191,232,891: One hundred and ninety-one million, two hundred and thirty-two thousand, eight hundred and ninety-one
1,006,101: One million, six thousand, one hundred and one
동일한 규칙이 수십억, 수조, 수조 이상에 적용되지만이 문제를 해결하기 위해 999,999,999를 초과하여 처리 할 필요는 없습니다 (9 백 9 천만, 9 억 9 천만, 구 백구 구).
파이썬 솔버
다음은 답변을 확인하는 간단한 파이썬 스크립트입니다.
import en
def get_letter_num(s):
count = 0
for c in s:
if c.isalpha():
count += 1
return count
number = input()
count = 0
for i in xrange(1, number + 1):
count += get_letter_num(en.number.spoken(i))
print count
이것은 NodeBox 언어 라이브러리를 사용하여 숫자를 영어로 변환합니다. (예, 나는 단지 내 자신의 규칙을 어겼지만 이것은 경쟁적인 대답이 아닙니다) 이것은 여기에서 자유롭게 구할 수 있습니다 .
샘플 I / O
7: 27
19: 106
72: 583
108: 1000
1337: 31,131
1234567: 63,448,174