back up next

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 ...

Miranda home