В гіпотезах Коллатц постулату , що якщо взяти будь-яке позитивне ціле число, а потім повторити наступний алгоритм досить раз:
if number is odd, then multiply by three and add one
if number is even, then divide by two
Ви в кінцевому підсумку закінчитеся на 1. Це, здається, завжди працює, але ніколи не було доведено, що це завжди так.
Ви вже гольфували, обчислюючи, скільки часу потрібно, щоб дістатися до 1 , тому я подумав, що я трохи перемкнув би речі.
Починаючи з заданого натурального числа, обчисліть, скільки часу потрібно, щоб дістатися до 1 (його "час зупинки"). Потім знайдіть час зупинки цього номера.
Повторюйте, поки не досягнете рівня 1, або поки не досягнете абсолютно довільної межі 100 ітерацій. У першому випадку надрукуйте, скільки ітерацій знадобилось. В останньому випадку надрукуйте "Fail" або якийсь інший послідовний результат на ваш вибір, доки це не ціле число 1≤n≤100
. Ви не можете вивести порожній рядок для цієї опції. Однак виведення цілого числа поза діапазону [1, 100] дозволено.
Приклади:
Input: 2
2->1
Output: 1
Input: 5
5->5->5->5->5->...
Output: Fail
Input: 10
10->6->8->3->7->16->4->2->1
Output: 8
Input: 100
100->25->23->15->17->12->9->19->20->7->16->4->2->1
Output: 13
Input: 10^100
10^100->684->126->108->113->12->9->19->20->7->16->4->2->1
Output: 13
Input: 12345678901234567890
12345678901234567890->286->104->12->9->19->20->7->16->4->2->1
Output: 11
Input: 1
--Depending on your code, one of two things may happen. Both are valid for the purposes of this question.
1
Output: 0
--Or:
1->3->7->16->4->2->1
Output: 6
Як я підрахував, 10^100
і 12345678901234567890
використовую мову, яка підтримує лише реальні цифри для цього розміру, якщо ваша мова більш точна, ви можете отримати різні результати для них.
Оцінка балів
Оскільки це код-гольф , відповідь з найменшою кількістю байтів виграє.