]> gitweb.ps.run Git - onefile/commitdiff
add hanoi.c
authorpatrick-scho <patrick.schoenberger@posteo.de>
Fri, 30 May 2025 20:57:12 +0000 (22:57 +0200)
committerpatrick-scho <patrick.schoenberger@posteo.de>
Fri, 30 May 2025 20:57:12 +0000 (22:57 +0200)
hanoi.c [new file with mode: 0644]

diff --git a/hanoi.c b/hanoi.c
new file mode 100644 (file)
index 0000000..ddbe4db
--- /dev/null
+++ b/hanoi.c
@@ -0,0 +1,35 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+void hanoi(char from, char to, int disks)
+{
+    char third = ('a' + 'b' + 'c') - from - to;
+
+    if (disks == 1)
+    {
+        printf("%c -> %c\n", from, to);
+    }
+    else
+    {
+        hanoi(from, third, disks - 1);
+        printf("%c -> %c\n", from, to);
+        hanoi(third, to, disks - 1);
+    }
+}
+
+int main(int argc, char **argv)
+{
+    if (argc != 4)
+    {
+        printf("Usage: %s <from> <to> <disks>\n", argv[0]);
+        return 1;
+    }
+
+    char from = argv[1][0];
+    char to = argv[2][0];
+    int disks = atoi(argv[3]);
+
+    hanoi(from, to, disks);
+
+    return 0;
+}