All challenges
Easy 0 solved 0% acceptance

Collatz Sequence

Follow the halve-or-triple-and-add-one rule until reaching 1.

Problem

Start with n. If it is even, divide it by 2; if it is odd, multiply it by 3 and add 1. Repeat until the value is 1. Include both the starting value and the final 1 in your answer.

Implement collatz_sequence(n).

Input

n: The positive starting integer.

Output

Return the complete sequence in order.

Constraints

1 ≤ n ≤ 10,000. Inputs in this range reach 1 under this rule; all sequence values fit a signed 64-bit integer.

Examples

Example 1
Input:
n = 6

Expected output:
expected = [6, 3, 10, 5, 16, 8, 4, 2, 1]
Input:
long long n = 6;

Expected output:
std::vector<long long> expected = {6, 3, 10, 5, 16, 8, 4, 2, 1};
Input:
long n = 6;

Expected output:
long[] expected = new long[] {6, 3, 10, 5, 16, 8, 4, 2, 1};

Explanation

6 is even, so it becomes 3. Then 3 becomes 10. Continue applying the rule until 1.

Example 2
Input:
n = 1

Expected output:
expected = [1]
Input:
long long n = 1;

Expected output:
std::vector<long long> expected = {1};
Input:
long n = 1;

Expected output:
long[] expected = new long[] {1};

Explanation

The starting value is already 1, so no transformations are needed.

References

This challenge is adapted for CodeUtility. Follow the statement and constraints above.

Learn from others

Community solutions

No published solutions yet. Solve this challenge to share the first one.