Thử thách này dựa trên video này . Tôi khuyên bạn nên xem nó trước khi thử thách này.
Đầu tiên chúng ta định nghĩa một hàm. Hàm này ( OEIS ) lấy số nguyên n làm đầu vào và xuất số lượng chữ cái trong biểu diễn tiếng Anh của n (không có dấu cách hoặc dấu gạch nối). Ví dụ: "ba" có 5 chữ cái nên 3 ánh xạ thành 5.
Như được thể hiện trong video bắt đầu bằng bất kỳ số nào lặp lại quá trình này cuối cùng sẽ dẫn đến bốn, sẽ tự ánh xạ mãi mãi.
Dưới đây là biểu đồ hướng thô cho thấy quỹ đạo của các số nhỏ hơn 16:
12 11
\|
15 2 6 1 10 14 13
\ \|/ / / /
7 3-/ 8--/
\| /
9 0 5--/
\ \|
\-4
Thử thách của bạn là xác định số bước mà một số sẽ thực hiện (hoặc số lần chức năng này phải được áp dụng cho một số) trước khi đạt bốn (tức là mức trên biểu đồ được chỉ dẫn trong hình).
Hình thành số tiếng anh
Dưới đây là một lời giải thích ngắn gọn về cách người ta nên hình thành các từ tiếng Anh cho thử thách này:
Các số từ một đến mười chín là:
một, hai, ba, bốn, năm, sáu, bảy, tám, chín, mười, mười một, mười hai, mười ba, mười bốn, mười lăm, mười sáu, mười bảy, mười tám, mười chín
Đối với các số lớn hơn mười chín, quy trình như sau:
Nếu số có hàng trăm vị trí bắt đầu bằng tên của chữ số ở hàng trăm và "trăm".
ví dụ
100 -> "onehundred"
Nếu phần còn lại ít hơn hai mươi thì nối phần đại diện bằng tiếng Anh của phần còn lại.
ví dụ
714 -> "sevenhundredfourteen"
Mặt khác, nếu chữ số hàng chục không bằng 0 nối thêm biểu diễn đúng:
2-> twenty
3-> thirty
4-> forty
5-> fifty
6-> sixty
7-> seventy
8-> eighty
9-> ninety
ví dụ
470 -> "fourhundredseventy"
Cuối cùng, nếu có một chữ số của một người nối thêm đại diện của nó
ví dụ
681 -> "sixhundredeightyone"
Quy định thêm
Đối với các số lớn hơn một trăm, bạn nên bỏ "và" khi đếm số lượng chữ cái. Ví dụ 577 là "fivehundredseventyseven" có 23 chữ cái.
Chương trình của bạn phải chấp nhận tất cả các số nguyên lớn hơn 0 và dưới 1.000 làm đầu vào thông qua các phương thức tiêu chuẩn.
Chương trình của bạn phải xuất số bước cần thiết cho các phương thức đầu ra tiêu chuẩn.
Đây là codegolf nên giải pháp có ít byte nhất sẽ thắng.
Các trường hợp thử nghiệm
1 -> 3
4 -> 0
7 -> 2
23 -> 5
577 -> 6
600 -> 4