이 도전은이 비디오를 기반으로합니다 . 이 도전을 시도하기 전에 시청하는 것이 좋습니다.
먼저 함수를 정의합니다. 이 함수 ( OEIS )는 정수 n을 입력으로 취하여 영어로 표현 된 n의 문자 수 (공백 또는 하이픈없이)를 출력합니다. 예를 들어 "three"에는 5 개의 문자가 있으므로 3은 5로 매핑됩니다.
이 과정을 반복하는 숫자로 시작하는 비디오에서 알 수 있듯이 결국에는 4 개가 발생하여 영원히 매핑됩니다.
다음은 16보다 작은 숫자의 궤도를 보여주는 원유 직접 그래프입니다.
12 11
\|
15 2 6 1 10 14 13
\ \|/ / / /
7 3-/ 8--/
\| /
9 0 5--/
\ \|
\-4
문제는 4에 도달하기 전에 숫자가 수행되는 단계 수 (또는이 함수를 숫자에 적용해야하는 횟수)를 결정하는 것입니다 (예 : 방향 그래프의 레벨).
영어 숫자 형성
이 도전에 대한 영어 단어를 어떻게 구성해야하는지에 대한 간단한 설명은 다음과 같습니다.
1에서 19까지의 숫자는 다음과 같습니다.
하나, 둘, 셋, 넷, 다섯, 여섯, 일곱, 여덟, 아홉, 열, 열한, 열두, 열 세, 열 네, 열 다섯, 열 여섯, 열 일곱, 열 여덟, 열 여덟
19보다 큰 숫자의 경우 프로세스는 다음과 같습니다.
숫자가 백 자리이면 백 자리의 자릿수로 시작하고 "백"입니다.
예 :
100 -> "onehundred"
나머지가 20보다 작 으면 나머지 영어 표현을 추가하십시오.
예 :
714 -> "sevenhundredfourteen"
그렇지 않으면 10 자리가 0이 아닌 경우 적절한 표현을 추가하십시오.
2-> twenty
3-> thirty
4-> forty
5-> fifty
6-> sixty
7-> seventy
8-> eighty
9-> ninety
예 :
470 -> "fourhundredseventy"
마지막으로 한 자리가 있다면 그 표현을 추가하십시오
예 :
681 -> "sixhundredeightyone"
추가 규정
100보다 큰 숫자의 경우 글자 수를 세는 경우 "and"를 생략해야합니다. 예를 들어 577은 "fivehundseventyseven"이며 23 자로되어 있습니다.
프로그램은 표준 방법을 통해 입력으로 0보다 크고 1,000보다 작은 모든 정수를 허용해야합니다.
프로그램은 표준 출력 방법에 필요한 단계 수를 출력해야합니다.
이것은 codegolf이므로 바이트 수가 가장 적은 솔루션이 승리합니다.
테스트 사례
1 -> 3
4 -> 0
7 -> 2
23 -> 5
577 -> 6
600 -> 4