commit 039fa5e
Artur Manuel
·
2025-07-06 02:11:21 +0000 UTC
parent 65ca845
feat(c): add c
5 files changed,
+104,
-0
+56,
-0
1@@ -0,0 +1,56 @@
2+# Prerequisites
3+*.d
4+
5+# Object files
6+*.o
7+*.ko
8+*.obj
9+*.elf
10+
11+# Linker output
12+*.ilk
13+*.map
14+*.exp
15+
16+# Precompiled Headers
17+*.gch
18+*.pch
19+
20+# Libraries
21+*.lib
22+*.a
23+*.la
24+*.lo
25+
26+# Shared objects (inc. Windows DLLs)
27+*.dll
28+*.so
29+*.so.*
30+*.dylib
31+
32+# Executables
33+*.exe
34+*.out
35+*.app
36+*.i*86
37+*.x86_64
38+*.hex
39+
40+# Debug files
41+*.dSYM/
42+*.su
43+*.idb
44+*.pdb
45+
46+# Kernel Module Compile Results
47+*.mod*
48+*.cmd
49+.tmp_versions/
50+modules.order
51+Module.symvers
52+Mkfile.old
53+dkms.conf
54+
55+# debug information files
56+*.dwo
57+
+11,
-0
1@@ -0,0 +1,11 @@
2+project(
3+ 'rosetta-collatz',
4+ 'c',
5+ version: '0.1',
6+ default_options: [
7+ 'warning_level=3',
8+ 'c_std=c23',
9+ ]
10+)
11+
12+subdir('src')
+4,
-0
1@@ -0,0 +1,4 @@
2+exe = executable('rosetta-collatz', 'rosetta_collatz.c',
3+ install : true)
4+
5+test('basic', exe)
+33,
-0
1@@ -0,0 +1,33 @@
2+#include <stdio.h>
3+#include <stdlib.h>
4+
5+int collatz(int a) {
6+ if (a % 2 == 0)
7+ return a / 2;
8+ return 3 * a + 1;
9+}
10+
11+void collatzSequence(char *buf, int a) {
12+ int offset = sprintf(buf, "%d: ", a);
13+ for (int i = a; i >= 1; i = collatz(i)) {
14+ if (i == 1) {
15+ sprintf(buf + offset, "1");
16+ break;
17+ }
18+ offset += sprintf(buf + offset, "%d, ", i);
19+ }
20+}
21+
22+int main(void) {
23+ for (int i = 1; i <= 10000; i++) {
24+ char *buf = malloc(sizeof(char) * 8192);
25+ collatzSequence(buf, i);
26+ if (buf == NULL) {
27+ fprintf(stderr, "memory allocation failed");
28+ return 1;
29+ }
30+ puts(buf);
31+ free(buf);
32+ }
33+ return 0;
34+}