Tracks
/
Zig
Zig
/
Ejercicios
/
Conjetura de Collatz
Conjetura de Collatz

Conjetura de Collatz

Fácil

Introducción

Una noche, te topaste con un cuaderno viejo lleno de garabatos misteriosos, como si alguien hubiera estado persiguiendo una idea de forma obsesiva. En una página, una sola pregunta resaltaba: ¿Todo número puede encontrar su camino hacia el 1? Estaba ligada a algo llamado la Conjetura de Collatz, un rompecabezas que ha desconcertado a los pensadores durante décadas.

Las reglas eran engañosamente simples. Elige cualquier número entero positivo.

  • Si es par, divídelo entre 2.
  • Si es impar, multiplícalo por 3 y súmale 1.

Luego, repite estos pasos con el resultado, continuando indefinidamente.

Con curiosidad, elegiste el número 12 para probarlo y comenzaste el viaje:

12 ➜ 6 ➜ 3 ➜ 10 ➜ 5 ➜ 16 ➜ 8 ➜ 4 ➜ 2 ➜ 1

Contando desde el segundo número (6), hizo falta 9 pasos para llegar al 1, y cada vez que las reglas se repetían, el número seguía cambiando. Al principio, la secuencia parecía impredecible, saltando hacia arriba, hacia abajo y por todos lados. Sin embargo, la conjetura afirma que sin importar cuál sea el número inicial, siempre terminaremos en el 1.

Era fascinante, pero también desconcertante. ¿Por qué parece funcionar siempre así? ¿Podría existir un número en el que el proceso se rompa, se repita en un bucle infinito o se escape hacia el infinito? El cuaderno sugería que resolver esto podría revelar algo profundo y, con ello, la fama, la fortuna y un lugar en la historia le esperan a quien logre descifrar sus secretos.

Instrucciones

Dado un entero positivo, devuelve el número de pasos que se necesitan para llegar a 1 según las reglas de la Conjetura de Collatz.

Manejo de errores

Para este ejercicio debes agregar un conjunto de errores ComputationError que contenga el error IllegalArgument. ¡Recuerda hacerlo público! La función steps debe devolver ComputationError.IllegalArgument cuando su argumento sea igual a cero.

Los ejercicios posteriores normalmente omitirán instrucciones explícitas como esta. En general, Exercism espera que leas el archivo de test cuando implementes tu solución.

Para más detalles sobre los errores en Zig, consulta:


Fuente

WikipediaEl enlace se abre en una ventana o pestaña nueva
Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
Zig Exercism

¿Todo listo para empezar Conjetura de Collatz?

Regístrate en Exercism para aprender y dominar Zig con 104 ejercicios y mentoría humana real, todo gratis.