Collatz Sequence

Medium Loops
Print the Collatz sequence from n to 1: if n is even, halve it; if odd, use 3n + 1.

Sample input

6

Sample output

6 3 10 5 16 8 4 2 1

Solution

n = 6
seq = []
while n != 1:
    seq.append(n)
    n = n // 2 if n % 2 == 0 else 3 * n + 1
seq.append(1)
print(*seq)
let n = 6;
const seq = [];
while (n !== 1) {
  seq.push(n);
  n = n % 2 === 0 ? n / 2 : 3 * n + 1;
}
seq.push(1);
console.log(seq.join(" "));
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        int n = 6;
        List<Integer> seq = new ArrayList<>();
        while (n != 1) {
            seq.add(n);
            n = (n % 2 == 0) ? n / 2 : 3 * n + 1;
        }
        seq.add(1);
        System.out.println(seq.stream().map(String::valueOf).collect(Collectors.joining(" ")));
    }
}
fun main() {
    var n = 6
    val seq = mutableListOf<Int>()
    while (n != 1) {
        seq.add(n)
        n = if (n % 2 == 0) n / 2 else 3 * n + 1
    }
    seq.add(1)
    println(seq.joinToString(" "))
}
var n = 6
var seq = [Int]()
while n != 1 {
    seq.append(n)
    n = n % 2 == 0 ? n / 2 : 3 * n + 1
}
seq.append(1)
print(seq.map(String.init).joined(separator: " "))
void main() {
  int n = 6;
  final seq = <int>[];
  while (n != 1) {
    seq.add(n);
    n = n % 2 == 0 ? n ~/ 2 : 3 * n + 1;
  }
  seq.add(1);
  print(seq.join(' '));
}
#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n = 6;
    vector<int> seq;
    while (n != 1) {
        seq.push_back(n);
        n = (n % 2 == 0) ? n / 2 : 3 * n + 1;
    }
    seq.push_back(1);
    for (int i = 0; i < (int) seq.size(); i++) {
        cout << seq[i];
        if (i < (int) seq.size() - 1) cout << " ";
    }
    cout << endl;
    return 0;
}
#include <stdio.h>

int main() {
    int n = 6, first = 1;
    while (n != 1) {
        if (!first) printf(" ");
        printf("%d", n);
        first = 0;
        n = (n % 2 == 0) ? n / 2 : 3 * n + 1;
    }
    printf(" 1\n");
    return 0;
}