Задача

13/13

TUZ_2-18-K Расстояние Коллатца

Теория Нажмите, чтобы прочитать/скрыть

Задача

TUZ_2-18 Расстояние Коллатца
Имея заданное целое число n, требуется достичь некоторого положительного целого числа с применением формул 3 × n + 1 и n//2, взятых из гипотезы Коллатца. Пусть путь между начальным и конечным числами start и goal имеет несколько слоев, содержащих по нескольку положительных целых чисел.
Первый слой инициализируется начальным числом start. Все положительные целые числа имеют одинаковое расстояние в каждом слое.
Начиная с начального числа start для каждого следующего слоя генерируются числа однократным применением формул 3 × n + 1 и n//2 к каждому числу в предыдущем слое. Создание слоев продолжается, пока в каком-то из них не будет получено искомое число goal.
Рассмотрим следующий пример. Пусть start = 10 и goal = 20. На каждом шаге генерируется несколько положительных целых чисел с одинаковым расстоянием, пока не будет получено число goal. Поскольку первый (будем считать его нулевым) слой инициализируется числом start, в нем имеется только число 10. Далее: 
• слой 1: к числу 10 применяются формулы 3 × n + 1 и n//2, и получают- ся два числа (3n + 1) = (3 × 10 + 1) = 31, (n//2) = (10//2) = 5;
• слой 2: к числам 31 и 5 применяются те же формулы, и получаются четыре числа (3 × 31 + 1) = 94, (3 × 5 + 1) = 16, (31//2) = 15, (5//2) = 2;
• слой 3: 283, 49, 46, 7, 47, 8, 7, 1;
• слой 4: 850, 148, 139, 22, 142, 25, 22, 4, 141, 24, 23, 3, 23, 4, 3, 0;
• слой 5: 2551, 445, 418, 67, 427, 76, 67, 13, 424, 73, 70, 10, 70, …;
• слой 6: 7654, 1336, 1255, 202, 1282, 229, 202, 40, …;
• слой 7: 22963, 4009, 3766, …, 20… 
Как видите, в слое 7 обнаружилось целевое число 20.
Ваша задача: написать функцию, которая принимает начальное и конечное числа и возвращает номер слоя, в котором присутствует целевое число.
В таблице показаны ожидаемые результаты для некоторых входных данных.
Некоторые ожидаемые результаты для задачи поиска целевого числа на основе расстояния Коллатца
Start, goal Ожидаемый результат
20, 321 9
22, 15 8
4, 7 2
10, 20 7
Ссылка на тетрадь с разбором
Напишите подпрограмму, которая находит и возвращает расстояние Коллатца между start и goal