progs/hanoi.fun
author Christian Urban <christian.urban@kcl.ac.uk>
Wed, 17 Sep 2025 16:30:09 +0100
changeset 987 ad5ad452223c
permissions -rw-r--r--
updated
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
987
ad5ad452223c updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     1
// Towers of Hanoi in Fun
ad5ad452223c updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     2
ad5ad452223c updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     3
def hanoi(n: Int, a: Int, b: Int, c: Int) : Void =
ad5ad452223c updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     4
  if n != 0 then {
ad5ad452223c updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     5
    hanoi(n - 1, a, c, b);
ad5ad452223c updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     6
    print_int(a);
ad5ad452223c updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     7
    print_string("->"); // prints out "->"
ad5ad452223c updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     8
    print_int(b);
ad5ad452223c updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     9
    print_char('\n');
ad5ad452223c updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    10
    hanoi(n - 1, c, b, a)
ad5ad452223c updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    11
  } else skip();
ad5ad452223c updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    12
ad5ad452223c updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    13
hanoi(4,1,2,3)