Towers Of Hanoi

Java Code

/**
 * TowersOfHanoi.java
 * Created by Stijn Strickx on Aug. 12 2006
 * Copyright 2006 Stijn Strickx, All rights reserved
 */

import java.io.*;

public class TowersOfHanoi {

	static int moves = 0;
	static int totalDisks = 0;
	
	public static void main(String[] arguments) throws java.io.IOException {
		int disks;
		char fromPole = 'A';
		char withPole = 'B';
		char toPole = 'C';
		disks = getNumber("\nHow many disks are there on the tower? ");
		totalDisks = disks;
		if(totalDisks > 10){
			System.out.println("Working...");
			}
		FileOutputStream fos = new FileOutputStream("TowersOfHanoiSolution.txt");
		PrintStream ps = new PrintStream(fos);
		solveHanoi(disks, fromPole, toPole, withPole, ps);
		ps.close();
		System.out.println();
		System.out.println("\nAmount of moves: " + moves + "\n");
		System.out.print("You can now access the TowersOfHanoiSolution.txt file");
		System.out.println(" which is in the same directory as the .class file of this program.");
		}
	
	static void solveHanoi(int disks, char fromPole, char toPole, char withPole, PrintStream ps) {
		if (disks >= 1) {
			solveHanoi(disks-1, fromPole, withPole, toPole, ps);
			moveDisk(fromPole, toPole, ps);
			solveHanoi(disks-1, withPole, toPole, fromPole, ps);
			}
		}
		
	static void moveDisk(char fromPole, char toPole, PrintStream ps) {
		moves++;
		if(totalDisks <= 10){
			System.out.print("Move from " + fromPole + " to " + toPole + ". ");
			ps.print("Move from " + fromPole + " to " + toPole + ". ");
			if (moves%4 == 0){
				System.out.println();
				ps.println();
				}
			}
			else {
			ps.print("Move from " + fromPole + " to " + toPole + ". ");
			if (moves%4 == 0){
				ps.println();
				}
			}
		}
	
	static int getNumber(String question) throws java.io.IOException {
		String theNumber;
		int number = 0;
		BufferedReader in = new BufferedReader (new InputStreamReader(System.in));
		System.out.print(question);
		theNumber = in.readLine();
		System.out.println();
		number = Integer.parseInt(theNumber);
		return number;
		}
	}

Home | Code | Learn
© 2007-2008 ProgLogic, all rights reserved. | ProgLogic.com is created by Stijn Strickx. | e-mail