TowersOfHanoi.frink

View or download TowersOfHanoi.frink in plain text format


/** This program implements a recursive Towers of Hanoi solver.

    See:
      https://en.wikipedia.org/wiki/Tower_of_Hanoi
*/


/** Set up the recursive call for n disks */
hanoi[n] := hanoi[n, 1, 3, 2]

/** The recursive call. */
hanoi[n, source, target, aux] :=
{
   if n > 0
   {
      // move n-1 disks from source to aux, so they are out of the way
      // This inverts the target and aux stacks.
      hanoi[n-1, source, aux, target]

      // move the nth disk from source to target
      println["Move from $source to $target"]
//      target.push[source.pop[]]

      // move the n-1 disks that we left on auxiliary onto target
      // This inverts the source and aux stacks.
      hanoi[n-1, aux, target, source]
   }
}

hanoi[7]


View or download TowersOfHanoi.frink in plain text format


This is a program written in the programming language Frink.
For more information, view the Frink Documentation or see More Sample Frink Programs.

Alan Eliasen was born 19100 days, 8 hours, 21 minutes ago.