Эта задача основана на этом видео . Я рекомендую вам посмотреть его, прежде чем пытаться решить эту проблему.
Сначала мы определим функцию. Эта функция ( 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