TowerOfHanoi

package ck.test.sort;

public class TowerOfHanoi {

    private int size;
    private String fromPeg;
    private String toPeg;
    private String usingPeg;

    public TowerOfHanoi(int size, String fromPeg,
            String toPeg, String usingPeg) {
    this.size = size;
    this.fromPeg = fromPeg;
    this.toPeg = toPeg;
    this.usingPeg = usingPeg;
    }

    public void solveTower() {
        // Print out some header information.
        System.out.println(“Steps for solving ” + size +
                   ” disk tower of hanoi puzzle, “);
        System.out.println(“starting with discs on ” + fromPeg +
                   ” and moving discs to ” + toPeg + “:”);
        System.out.println();
   
        // Solve the problem by moving size disks from the
        // fromPeg to the toPeg using the usingPeg.
        solveTower(size, fromPeg, toPeg, usingPeg);// C2
    }

    // Recursive helper method that prints the instructions for
    // moving numDisks from the fromPeg to the toPeg using the
    // usingPeg.
    private void solveTower(int num, String from, String to, String using) {
        if (num == 1) {
            // Base Case: Move 1 disk…
            System.out.println(“Move disk from ” + from +
                       ” to ” + to + “.”);
        }
        else {
            // Recursive Case:
            //   Move num-1 disks from the from peg to
            //   the usingPeg using the toPeg.
            solveTower(num-1, from, using, to);   // RC1
   
            //   Move 1 disk from the fromPeg to the toPeg using
            //   the usingPeg.
            solveTower(1, from, to, using);            // RC2
           
            //   Move num-1 disks from the usingPeg to
            //   the toPeg using the fromPeg.
            solveTower(num-1, using, to, from);   // RC3
        }
    }

    public static void main(String[] args) {
        TowerOfHanoi tower = new TowerOfHanoi(4,”A”, “B”, “C”);
        tower.solveTower();// C1
        //ADD STACK TO THE THREE POLE SO THAT THE PROCESS CAN BE BACK-TRACABLE…
    }
}

Leave a comment