La conjetura de Collatz postula que si toma un número entero positivo, repita el siguiente algoritmo suficientes veces:
if number is odd, then multiply by three and add one
if number is even, then divide by two
eventualmente terminarás en 1. Parece que siempre funciona, pero nunca se ha demostrado que siempre funcione.
Ya has jugado al golf calculando cuánto tiempo lleva llegar a 1 , así que pensé en cambiar un poco las cosas.
Comenzando con un entero positivo dado, calcule cuánto tiempo lleva llegar a 1 (su "tiempo de detención"). Luego encuentra el tiempo de detención de ese número.
Repita hasta llegar a 1, o hasta llegar al límite completamente arbitrario de 100 iteraciones. En el primer caso, imprima cuántas iteraciones tomó. En el último caso, imprima "Fail" o algún otro resultado consistente de su elección, siempre que no sea un número entero 1≤n≤100
. No puede generar una cadena vacía para esta opción. Sin embargo, se permite generar un número entero fuera del rango [1, 100].
Ejemplos:
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
Como calculé 10^100
y 12345678901234567890
usando un idioma que solo admite reales para ese tamaño, si su idioma es más preciso, puede obtener resultados diferentes para ellos.
Tanteo
Como se trata de código de golf , gana la respuesta con la menor cantidad de bytes.