Die Collatz-Vermutung geht davon aus , dass Sie den folgenden Algorithmus genügend oft wiederholen sollten, wenn Sie eine positive ganze Zahl verwenden:
if number is odd, then multiply by three and add one
if number is even, then divide by two
Sie werden schließlich bei 1 enden. Es scheint immer zu funktionieren, aber es ist nie bewiesen worden, dass es immer funktioniert.
Sie haben bereits damit gerechnet, wie lange es dauert, bis 1 erreicht ist , und ich dachte, ich würde die Dinge ein wenig auf den Kopf stellen .
Berechnen Sie ausgehend von einer bestimmten positiven Ganzzahl, wie lange es dauert, bis 1 erreicht ist (die "Stoppzeit"). Finden Sie dann die Stoppzeit dieser Zahl.
Wiederholen Sie diesen Vorgang, bis Sie 1 erreichen oder bis Sie das völlig willkürliche Limit von 100 Iterationen erreichen. Geben Sie im ersten Fall an, wie viele Iterationen erforderlich waren. In letzterem Fall geben Sie "Fail" oder eine andere konsistente Ausgabe Ihrer Wahl aus, sofern es sich nicht um eine Ganzzahl handelt 1≤n≤100
. Sie können für diese Option keine leere Zeichenfolge ausgeben. Die Ausgabe einer Ganzzahl außerhalb des Bereichs [1, 100] ist jedoch zulässig.
Beispiele:
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
Da ich eine Sprache berechnet 10^100
und 12345678901234567890
verwendet habe, die nur Real für diese Größe unterstützt, erhalten Sie bei genauerer Sprache möglicherweise unterschiedliche Ergebnisse für diese.
Wertung
Da es sich um Code-Golf , die Antwort mit der kürzesten Menge von Bytes gewinnt.