diff options
| author | patrick-scho | 2025-05-30 22:57:12 +0200 |
|---|---|---|
| committer | patrick-scho | 2025-05-30 22:57:12 +0200 |
| commit | 2b3f2bfe27d231b7d140785520597dffed826a35 (patch) | |
| tree | 11e152b328a351a1f4ab05e9bbd415b956be26b2 /hanoi.c | |
| parent | 6f2e28e44c3d1552a12b4e3d92f9d4788d5aab09 (diff) | |
| download | onefile-2b3f2bfe27d231b7d140785520597dffed826a35.tar.gz onefile-2b3f2bfe27d231b7d140785520597dffed826a35.zip | |
add hanoi.c
Diffstat (limited to 'hanoi.c')
| -rw-r--r-- | hanoi.c | 35 |
1 files changed, 35 insertions, 0 deletions
@@ -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; +} |
