### hanoi.m

soln = title++hanoi 8 "A" "B" "C"
title = "SOLUTION TO TOWERS OF HANOI WITH 8 DISCS\n\n"
hanoi 0 a b c = []
hanoi (n+1) a b c = hanoi n a c b
++ move a b ++
hanoi n c b a
move a b = "move the top disc from "++a++" to "++b++"\n"

This script generates a solution to the well known `Towers of Hanoi'
problem. There are three pegs, A, B, C, say. On the first peg is a
conical pile of discs, each disc smaller than the one below. The goal
is to move all the discs to B, using C as a spare, moving one disc at time
without ever putting
a disc on top of a smaller one. To see the moves for a game with 8
discs say

soln

the output looks like this:
SOLUTION TO TOWERS OF HANOI WITH 8 DISCS
move the top disc from A to C
move the top disc from A to B
move the top disc from C to B
move the top disc from A to C
move the top disc from B to A
move the top disc from B to C
move the top disc from A to C
move the top disc from A to B
move the top disc from C to B
move the top disc from C to A
move the top disc from B to A
move the top disc from C to B
move the top disc from A to C
move the top disc from A to B
move the top disc from C to B
move the top disc from A to C
move the top disc from B to A
.....
(255 moves in total)

According to legend, the game is being played with 64 gold discs in a Bhuddist
monastery. When the monks have finished
the game, the world will cease to exist ...