Цей виклик заснований на цьому відео . Рекомендую переглянути його, перш ніж спробувати цей виклик.
Спочатку визначимо функцію. Ця функція ( OEIS ) приймає ціле число n як вхідне та виводить кількість літер в англійському поданні n (без пробілів чи дефісів). Наприклад, у "трьох" є 5 літер, тому 3 карти на 5.
Як показано на відео, починаючи з будь-якого числа, повторення цього процесу в кінцевому підсумку призведе до четвірки, яка відобразить себе назавжди.
Ось графік із силою спрямованістю, що показує орбіти чисел менше 16:
12 11
\|
15 2 6 1 10 14 13
\ \|/ / / /
7 3-/ 8--/
\| /
9 0 5--/
\ \|
\-4
Ваше завдання полягає в тому, щоб визначити кількість кроків, які буде виконано число (або кількість разів, яку ця функція повинна бути застосована до числа), перш ніж досягти чотирьох (тобто рівня на зображеному графіку).
Формування англійських номерів
Ось коротке пояснення того, як слід скласти англійські слова для цього завдання:
Числа від одного до дев'ятнадцяти:
один, два, три, чотири, п’ять, шість, сім, вісім, дев’ять, десять, одинадцять, дванадцять, тринадцять, чотирнадцять, п’ятнадцять, шістнадцять, сімнадцять, вісімнадцять, дев'ятнадцять
Для чисел, що перевищують дев’ятнадцять, процес такий:
Якщо число має сотень місце, починайте з назви цифри у сотенному місці та "сотня".
напр
100 -> "onehundred"
Якщо залишок менше двадцяти, додайте решту англійською мовою.
напр
714 -> "sevenhundredfourteen"
В іншому випадку, якщо десяткова цифра не дорівнює нулю, додайте належне подання:
2-> twenty
3-> thirty
4-> forty
5-> fifty
6-> sixty
7-> seventy
8-> eighty
9-> ninety
напр
470 -> "fourhundredseventy"
Нарешті, якщо є цифра, додайте її подання
напр
681 -> "sixhundredeightyone"
Подальші регламенти
Для чисел, що перевищують сто, ви повинні залишати "і" під час підрахунку кількості букв. Наприклад, 577 - це "п'ятсот сімдесятдесят", який має 23 літери.
Ваша програма повинна приймати всі цілі числа, що перевищують 0 та менше 1000, як введення стандартними методами.
Ваша програма повинна вивести кількість етапів, необхідних для стандартних методів виводу.
Це кодогольф, тому рішення з найменшими байтами виграє.
Тестові справи
1 -> 3
4 -> 0
7 -> 2
23 -> 5
577 -> 6
600 -> 4