Bu zorluk bu videoyu temel alıyor . Bu meydan okumayı denemeden önce izlemenizi tavsiye ederim.
İlk önce bir fonksiyon tanımlarız. Bu işlev ( OEIS ) n olarak bir tamsayı alır ve n'nin İngilizce temsilindeki (boşluk veya kısa çizgi olmadan) harf sayısını çıkarır. Örneğin "üç" ün 5 harfi vardır, bu nedenle 3 harf 5 ile eşleşir.
Videoda gösterildiği gibi, bu işlemi tekrarlayan herhangi bir sayı ile başlayarak, sonunda dörtle sonuçlanacak ve bu da sonsuza kadar kendi kendine eşleşecektir.
16'dan küçük sayıların yörüngelerini gösteren kaba bir grafik:
12 11
\|
15 2 6 1 10 14 13
\ \|/ / / /
7 3-/ 8--/
\| /
9 0 5--/
\ \|
\-4
Buradaki zorluk, dördüncüye ulaşmadan önce bir sayının alacağı adım sayısını (veya bu fonksiyonun bir sayıya kaç kez uygulanması gerektiğini) belirlemektir (örn. Resimde gösterilen grafikteki seviye).
İngilizce numaralar oluşturma
İşte bu meydan okuma için İngilizce kelimeleri nasıl oluşturacağınıza dair kısa bir açıklama:
Bir ile on dokuz arasındaki sayılar:
bir, iki, üç, dört, beş, altı, yedi, sekiz, dokuz, on, onbir, on iki, on üç, on dört, on beş, on altı, on yedi, on sekiz, on dokuz
On dokuzdan büyük sayılar için işlem aşağıdaki gibidir:
Sayı yüzlerce yer varsa, yüzlerce yerde basamak adı ve "yüz" ile başlayın.
Örneğin
100 -> "onehundred"
Kalan yirmiden azsa kalanın İngilizce temsilini ekleyin.
Örneğin
714 -> "sevenhundredfourteen"
Aksi takdirde, onlar basamağı sıfır değilse uygun temsili ekleyin:
2-> twenty
3-> thirty
4-> forty
5-> fifty
6-> sixty
7-> seventy
8-> eighty
9-> ninety
Örneğin
470 -> "fourhundredseventy"
Sonunda bir rakam varsa temsilini ekleyin
Örneğin
681 -> "sixhundredeightyone"
Diğer Koşullar
Yüzden büyük sayılar için, harf sayısını sayarken "ve" işaretini dışarıda bırakmalısınız. Örneğin 577, 23 harften oluşan "beşyüzyüzyıl".
Programınız standart yöntemlerle 0'dan büyük ve 1.000'den küçük tamsayıları girdi olarak kabul etmelidir.
Programınızın standart çıktı yöntemleri için gereken adım sayısını vermesi gerekir.
Bu kodgolf bu yüzden en az bayt ile çözüm kazanır.
Test senaryoları
1 -> 3
4 -> 0
7 -> 2
23 -> 5
577 -> 6
600 -> 4