Tantangan ini didasarkan pada video ini . Saya sarankan Anda menontonnya sebelum mencoba tantangan ini.
Pertama kita mendefinisikan suatu fungsi. Fungsi ini ( OEIS ) mengambil bilangan bulat n sebagai input dan menghasilkan jumlah huruf dalam representasi bahasa Inggris dari n (tanpa spasi atau tanda hubung). Misalnya "tiga" memiliki 5 huruf jadi 3 peta ke 5.
Seperti yang diperlihatkan dalam video dimulai dengan nomor yang berulang proses ini pada akhirnya akan menghasilkan empat, yang akan memetakan dirinya sendiri selamanya.
Berikut ini adalah grafik yang diarahkan langsung yang menunjukkan orbit angka kurang dari 16:
12 11
\|
15 2 6 1 10 14 13
\ \|/ / / /
7 3-/ 8--/
\| /
9 0 5--/
\ \|
\-4
Tantangan Anda adalah menentukan jumlah langkah yang akan diambil suatu angka (atau berapa kali fungsi ini harus diterapkan pada angka) sebelum mencapai empat (yaitu level pada grafik yang diarahkan pada gambar).
Membentuk angka bahasa Inggris
Berikut adalah penjelasan singkat tentang bagaimana seseorang harus membentuk kata-kata bahasa Inggris untuk tantangan ini:
Angka satu hingga sembilan belas adalah:
satu, dua, tiga, empat, lima, enam, tujuh, delapan, sembilan, sepuluh, sebelas, dua belas, tiga belas, empat belas, lima belas, enam belas, tujuh belas, delapan belas, sembilan belas
Untuk angka yang lebih besar dari sembilan belas prosesnya adalah sebagai berikut:
Jika nomor tersebut memiliki ratusan tempat, mulailah dengan nama digit di ratusan tempat dan "ratus".
misalnya
100 -> "onehundred"
Jika sisanya kurang dari dua puluh tambahkan perwakilan bahasa Inggris sisanya.
misalnya
714 -> "sevenhundredfourteen"
Kalau tidak, jika puluhan digit bukan nol tambahkan representasi yang tepat:
2-> twenty
3-> thirty
4-> forty
5-> fifty
6-> sixty
7-> seventy
8-> eighty
9-> ninety
misalnya
470 -> "fourhundredseventy"
Akhirnya jika ada satu digit menambahkan perwakilannya
misalnya
681 -> "sixhundredeightyone"
Ketentuan lebih lanjut
Untuk angka yang lebih besar dari seratus Anda harus meninggalkan "dan" saat menghitung jumlah huruf. Misalnya 577 adalah "fivehundredseventyseven" yang memiliki 23 huruf.
Program Anda harus menerima semua bilangan bulat yang lebih besar dari 0 dan kurang dari 1.000 sebagai input melalui metode standar.
Program Anda harus menampilkan jumlah langkah yang diperlukan untuk metode keluaran standar.
Ini codegolf sehingga solusi dengan byte paling sedikit menang.
Uji kasus
1 -> 3
4 -> 0
7 -> 2
23 -> 5
577 -> 6
600 -> 4