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