commit 039fa5e

Artur Manuel  ·  2025-07-06 02:11:21 +0000 UTC
parent 65ca845
feat(c): add c
5 files changed,  +104, -0
+0, -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+}