The Collatz Conjecture or 3x+1 problem can be summarized as follows:
Take any positive integer n. If n is even, divide n by 2 to get n / 2. If n is odd, multiply n by 3 and add 1 to get 3n + 1. Repeat the process indefinitely. The conjecture states that no matter which number you start with, you will always reach 1 eventually.
Given a number n, return the number of steps required to reach 1.
(Keep in mind that the Conjecture is only concerned with strictly positive
integers, so your solution should return None if given 0 or a negative
integer.)
Starting with n = 3, the steps would be as follows:
- 3
- 10
- 5
- 16
- 8
- 4
- 2
- 1
Resulting in 7 steps. So for input n = 3, the return value would be 7.
Starting with n = 12, the steps would be as follows:
- 12
- 6
- 3
- 10
- 5
- 16
- 8
- 4
- 2
- 1
Resulting in 9 steps. So for input n = 12, the return value would be 9.
Note that, when trying to submit an exercise, make sure the solution is in the exercism/python/<exerciseName> directory.
For example, if you're submitting bob.py for the Bob exercise, the submit command would be something like exercism submit <path_to_exercism_dir>/python/bob/bob.py.
For more detailed information about running tests, code style and linting, please see the help page.
An unsolved problem in mathematics named after mathematician Lothar Collatz https://en.wikipedia.org/wiki/3x_%2B_1_problem
It's possible to submit an incomplete solution so you can see how others have completed the exercise.