Golang ProgramsGolang Programs

Golang program for implementation of Tower of Hanoi Algorithm

Tower of Hanoi, is a mathematical puzzle which consists of three towers (pegs) and more than one rings. The puzzle starts with the disks in a neat stack in ascending order of size on one rod, the smallest at the top, thus making a conical shape. Here is source code of the Go Program to implement Tower of Hanoi Algorithm
// Tower of Hanoi in Golang
package main
 
import "fmt"

type solver interface {
    play(int)
}
  
// towers is example of type satisfying solver interface
type towers struct {
    // an empty struct
}
 
// play is sole method required to implement solver type
func (t *towers) play(n int) {    
    t.moveN(n, 1, 2, 3)
}
 
// recursive algorithm
func (t *towers) moveN(n, from, to, via int) {
    if n > 0 {
        t.moveN(n-1, from, via, to)
        t.moveM(from, to)
        t.moveN(n-1, via, to, from)
    }
}

func (t *towers) moveM(from, to int) {
    fmt.Println("Move disk from rod", from, "to rod", to)
}

func main() {
    var t solver    
    t = new(towers) // type towers must satisfy solver interface
    t.play(4)
}
C:\golang\time>go run hanoi.go
Move disk from rod 1 to rod 3
Move disk from rod 1 to rod 2
Move disk from rod 3 to rod 2
Move disk from rod 1 to rod 3
Move disk from rod 2 to rod 1
Move disk from rod 2 to rod 3
Move disk from rod 1 to rod 3
Move disk from rod 1 to rod 2
Move disk from rod 3 to rod 2
Move disk from rod 3 to rod 1
Move disk from rod 2 to rod 1
Move disk from rod 3 to rod 2
Move disk from rod 1 to rod 3
Move disk from rod 1 to rod 2
Move disk from rod 3 to rod 2

C:\golang\time>