La conjecture de Collatz postule que si vous prenez un entier positif, répétez l'algorithme suivant suffisamment de fois:
if number is odd, then multiply by three and add one
if number is even, then divide by two
vous finirez par finir à 1. Cela semble toujours fonctionner, mais il n'a jamais été prouvé que cela fonctionne toujours.
Vous avez déjà joué au golf en calculant le temps qu'il faut pour arriver à 1 , alors j'ai pensé changer un peu les choses.
En partant d'un entier positif donné, calculez le temps qu'il faut pour arriver à 1 (son «temps d'arrêt»). Trouvez ensuite l'heure d'arrêt de ce numéro.
Répétez jusqu'à ce que vous atteigniez 1, ou jusqu'à ce que vous atteigniez la limite entièrement arbitraire de 100 itérations. Dans le premier cas, indiquez le nombre d'itérations nécessaires. Dans ce dernier cas, imprimez "Fail" ou une autre sortie cohérente de votre choix, tant qu'il ne s'agit pas d'un entier 1≤n≤100
. Vous ne pouvez pas générer de chaîne vide pour cette option. La sortie d'un entier en dehors de la plage [1, 100] est cependant autorisée.
Exemples:
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
Comme je l'ai calculé 10^100
et en 12345678901234567890
utilisant une langue qui ne prend en charge que les réels pour cette taille, si votre langue est plus précise, vous pouvez obtenir des résultats différents pour ceux-ci.
Notation
Comme il s'agit de code-golf , la réponse avec le plus petit nombre d'octets l'emporte.