この挑戦はこのビデオに基づいています。この挑戦を試みる前にそれを見ることをお勧めします。
最初に関数を定義します。この関数(OEIS)は、整数nを入力として受け取り、nの英語表現(スペースまたはハイフンなし)で文字数を出力します。たとえば、「3」は5文字なので、3は5にマップされます。
このプロセスを繰り返す任意の数で始まるビデオで示されているように、最終的には4になり、それは永久にマップされます。
以下は、16より小さい数の軌道を示す大まかな有向グラフです。
12 11
\|
15 2 6 1 10 14 13
\ \|/ / / /
7 3-/ 8--/
\| /
9 0 5--/
\ \|
\-4
あなたの課題は、4に達する前に数値がとるステップの数(またはこの関数を数値に適用する必要がある回数)を決定することです(つまり、グラフの有向グラフのレベル)。
英語の数字の形成
このチャレンジのために英語の単語をどのように形成するかについての簡単な説明を次に示します。
1から19までの数字は次のとおりです。
1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、19
19を超える数の場合、プロセスは次のとおりです。
数が数百位の場合、数百位の数字の名前で始まり、「百」。
例えば
100 -> "onehundred"
剰余が20未満の場合、剰余の英語表記を追加します。
例えば
714 -> "sevenhundredfourteen"
それ以外の場合、10桁がゼロでない場合は、適切な表現を追加します。
2-> twenty
3-> thirty
4-> forty
5-> fifty
6-> sixty
7-> seventy
8-> eighty
9-> ninety
例えば
470 -> "fourhundredseventy"
最後に、数字がある場合、その表現を追加します
例えば
681 -> "sixhundredeightyone"
さらなる規定
100を超える数については、文字数を数えるときに「and」を省く必要があります。たとえば、577は23文字の「fivehundredseventyseven」です。
プログラムは、標準メソッドを介した入力として、0より大きく1,000より小さい整数をすべて受け入れる必要があります。
プログラムは、標準出力メソッドに必要なステップ数を出力する必要があります。
これはcodegolfであるため、バイト数が最も少ないソリューションが優先されます。
テストケース
1 -> 3
4 -> 0
7 -> 2
23 -> 5
577 -> 6
600 -> 4