One evening, you stumbled upon an old notebook filled with cryptic scribbles, as though someone had been obsessively chasing an idea. On one page, a single question stood out: Can every number find its way to 1? It was tied to something called the Collatz Conjecture, a puzzle that has baffled thinkers for decades.
The rules were deceptively simple. Pick any positive integer.
Then, repeat these steps with the result, continuing indefinitely.
Curious, you picked number 12 to test and began the journey:
12 β 6 β 3 β 10 β 5 β 16 β 8 β 4 β 2 β 1
Counting from the second number (6), it took 9 steps to reach 1, and each time the rules repeated, the number kept changing. At first, the sequence seemed unpredictable β jumping up, down, and all over. Yet, the conjecture claims that no matter the starting number, we'll always end at 1.
It was fascinating, but also puzzling. Why does this always seem to work? Could there be a number where the process breaks down, looping forever or escaping into infinity? The notebook suggested solving this could reveal something profound β and with it, fame, fortune, and a place in history awaits whoever could unlock its secrets.
Given a positive integer, return the number of steps it takes to reach 1 according to the rules of the Collatz Conjecture.
For this exercise you must add an error set ComputationError
that contains the IllegalArgument
error.
Remember to make it public!
The steps
function must return ComputationError.IllegalArgument
when its input is equal to zero.
Later exercises will usually omit explicit instructions like this. In general, Exercism expects you to read the test file when implementing your solution.
For more details about errors in Zig, see:
Sign up to Exercism to learn and master Zig with 60 exercises, and real human mentoring, all for free.