1import std.array;
2import std.stdio;
3import std.format;
4
5int collatz(int num) @safe
6{
7 if (num % 2 == 0)
8 {
9 return num / 2;
10 }
11 return 3 * num + 1;
12}
13
14size_t collatzSequence(char[] buf, int num) @safe
15{
16 auto cursor = buf;
17 size_t written = 0;
18 formattedWrite(cursor, "%d: ", num);
19 written = buf.length - cursor.length;
20 for (int i = collatz(num); i > 1; i = collatz(i))
21 {
22 formattedWrite(cursor, "%d, ", i);
23 written = buf.length - cursor.length;
24 }
25 formattedWrite(cursor, "1");
26 written = buf.length - cursor.length;
27 return written;
28}
29
30void main() @safe
31{
32 char[] buf = new char[2048];
33 for (int i = 1; i <= 10_000; i++)
34 {
35 size_t len = collatzSequence(buf, i);
36 writefln("%s", buf[0 .. len]);
37 }
38}