Numa noite, encontraste um caderno antigo cheio de rabiscos enigmáticos, como se alguém perseguisse uma ideia de forma obsessiva. Numa das páginas, destacava-se uma única pergunta: Será que todos os números conseguem chegar ao 1? Estava ligada a algo chamado Conjetura de Collatz, um enigma que intriga pensadores há décadas.
As regras eram enganadoramente simples. Escolhe qualquer número inteiro positivo.
Depois, repete estes passos com o resultado e continua assim indefinidamente.
Curioso, escolheste o número 12 para testar e começaste a viagem:
12 ➜ 6 ➜ 3 ➜ 10 ➜ 5 ➜ 16 ➜ 8 ➜ 4 ➜ 2 ➜ 1
A contar desde o segundo número (6), foram precisos 9 passos para chegar ao 1, e a cada repetição das regras o número continuava a mudar. Ao início, a sequência parecia imprevisível: saltava para cima, para baixo e para todos os lados. No entanto, a conjetura afirma que, seja qual for o número de partida, acabamos sempre no 1.
Era fascinante, mas também desconcertante. Porque é que isto parece funcionar sempre? Será que existe algum número em que o processo se desmorone, entre num ciclo sem fim ou se perca no infinito? O caderno sugeria que resolver isto poderia revelar algo profundo, e, com isso, a fama, a fortuna e um lugar na história esperam quem conseguir desvendar os seus segredos.
Dado um número inteiro positivo, devolve o número de passos necessários para chegar a 1 de acordo com as regras da Conjetura de Collatz.
Neste exercício, tens de adicionar um conjunto de erros ComputationError que contém o erro IllegalArgument.
Não te esqueças de o tornar público!
A função steps tem de devolver ComputationError.IllegalArgument quando o valor de entrada for igual a zero.
Os exercícios seguintes costumam omitir instruções explícitas como esta. Em geral, o Exercism espera que leias o ficheiro de testes ao implementar a tua solução.
Para mais detalhes sobre erros em Zig, vê:
Inscreve-te no Exercism para aprenderes e dominares Zig com 104 exercícios, e mentoria humana real, tudo grátis.