Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs
Community Proposals
Community Proposals
tag:snake search within a tag
answers:0 unanswered questions
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
votes:4 posts with 4+ votes
created:<1w created < 1 week ago
post_type:xxxx type of post
Search help
Notifications
Mark all as read See all your notifications »
Challenges

Comments on Collatz conjecture; Count the tries to reach $1$

Parent

Collatz conjecture; Count the tries to reach $1$

+7
−0

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 $3x + 1$, and it is applied this way:

  • If $x$ is odd, then $3x + 1$.
  • If $x$ is even, then $\frac{x}{2}$.

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 $x$ 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 $1$. 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!

History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.
Why should this post be closed?

0 comment threads

Post
+1
−0

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]&

Try it online!

Had to add a slightly janky print statement into the main body for the value of i to get reset on each evaluation.

History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.

1 comment thread

Saving 9 characters in the version without Collatz builtin (1 comment)
Saving 9 characters in the version without Collatz builtin
celtschk‭ wrote over 2 years ago

You don't need the Floor here. When dividing an even integer by 2, Mathematica automatically gives an integer. Also, the space in 3 # is unnecessary. And #!=1 can be replaced by #>1.