W Collatz Conjecture postulaty że jeśli wziąć dowolną dodatnią liczbę całkowitą, a następnie powtórzyć tyle razy następujący algorytm:
if number is odd, then multiply by three and add one
if number is even, then divide by two
ostatecznie skończysz jako 1. Wygląda na to, że zawsze działa, ale nigdy nie udowodniono, że zawsze działa.
Grałeś już w golfa, obliczając ile czasu zajmuje dotarcie do 1 , więc pomyślałem, że trochę zmienię.
Zaczynając od podanej dodatniej liczby całkowitej, oblicz, ile czasu zajmuje dotarcie do 1 (jej „czasu zatrzymania”). Znajdź czas zatrzymania tego numeru.
Powtarzaj tę czynność, aż dojdziesz do 1 lub do całkowicie arbitralnego limitu 100 iteracji. W pierwszym przypadku wydrukuj ile iteracji to zajęło. W tym drugim przypadku wypisz „Fail” lub inny spójny wynik według własnego wyboru, o ile nie jest to liczba całkowita 1≤n≤100
. Nie możesz wypisać pustego ciągu dla tej opcji. Wyprowadzenie liczby całkowitej spoza zakresu [1, 100] jest jednak dozwolone.
Przykłady:
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
Jak obliczyłem 10^100
i 12345678901234567890
używając języka, który obsługuje tylko liczby rzeczywiste dla tego rozmiaru, jeśli Twój język jest dokładniejszy, możesz uzyskać inne wyniki dla nich.
Punktacja
Ponieważ jest to gra w golfa , wygrywa odpowiedź z najmniejszą ilością bajtów.