Comments on
Collatz conjecture; Count the tries to reach
Parent
Collatz conjecture; Count the tries to reach
Background
Check out this video on the Collatz conjecture, also known as A006577.
If you don't know what this is, we're given an equation of
- If
is odd, then . - If
is even, then .
This will send us in a loop of 4 → 2 → 1 → 4 → 2 → 1...
, which got me into making this challenge.
Challenge
Write a program that establishes the Collatz conjecture:
- Take input of a positive integer. This will be the
of the problem. - Read the background for how it works, or watch the video for further explanation.
- The result should be how many turns it would take before reaching
. There, the sequence stops. - This is code-golf, so the shortest program in each language wins!
Test Cases
From 1 to 10:
1 → 0 (1)
2 → 1 (2 → 1)
3 → 7 (3 → 10 → 5 → 16 → 8 → 4 → 2 → 1)
4 → 2 (4 → 2 → 1)
5 → 5 (5 → 16 → 8 → 4 → 2 → 1)
6 → 8 (6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1)
7 → 16 (7 → 22 → 11 → 34 → 17 → 52 → 26 → 13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1)
8 → 3 (8 → 4 → 2 → 1)
9 → 19 (9 → 28 → 14 → 7 → 22 → 11 → 34 → 17 → 52 → 26 → 13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1)
10 → 6 (10 → 5 → 16 → 8 → 4 → 2 → 1)
More of these can be found on OEIS. Thanks to @Shaggy for the link!
JavaScript, 28 bytes …
3y ago
[Sclipting], (UTF-16) 44 34 32 …
3y ago
[Python 3], 48 42 39 bytes …
3y ago
[Haskell], 43 39 bytes …
3y ago
Lua 5.4, 67 60 bytes ``` lu …
3y ago
[BQN], 31 28 bytes {1+( …
3y ago
Japt, 15 bytes É©Òß[U3Ä …
3y ago
J, 35 char ``` :@:&3)@.(2& …
3y ago
[Wolfram Language (Mathematica …
3y ago
C (gcc), 43 38 bytes ``` C …
3y ago
[AWK], 46 bytes {c=0;fo …
3y ago
[shortC], 47 bytes a,b; …
3y ago
[Ruby], 33 bytes Recursive la …
3y ago
Scala, 50 bytes ```scala Str …
3y ago
[Java (JDK)], 150 bytes …
3y ago
Post
Wolfram Language (Mathematica), 38 bytes
Tr[1^ResourceFunction["Collatz"]@#]-1&
Don't Try it online!
Doesn't work on TIO due to using the Collatz builtin which needs to be downloaded from the Function Repository
Relatively badly-golfed version without ResourceFunction (52 bytes):
i=0;If[#!=1,i++;#0[If[EvenQ@#,Floor[#/2],3 #+1]],i]&
Had to add a slightly janky print statement into the main body for the value of i to get reset on each evaluation.
0 comment threads