Collatz Sequence
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;
}