Manusia Biasa …

4 February 2009

Tower of Hanoi

Filed under: Belajar dan Tutorial,Teknologi dan Komputer — rachlax @ 1:00 pm
Tags: , ,


/**
	Filename : Hanoi.java
	Author   : Rachmad Laksana
	Supported by Mr. Solechoel Arifin (Solusi247)
*/

public class Hanoi {
	static int step = 0;
	
	public static void main(String[]arg) {
		if(arg.length == 1 && integerKah(arg[0])) {
			int n = Integer.parseInt(arg[0]);
			if(n > 0) { tulisLangkah(n, 'A', 'B', 'C'); }
			else { System.out.println("Argumen (input) yang dimasukkan harus bilangan bulat positif!"); }
		}
		else if(arg.length == 0) {
			System.out.println("Program memerlukan 1 argumen yang merupakan suatu bilangan bulat posistif!");
		}
		else {
			System.out.println("Argumen (input) yang dimasukkan tidak valid...!");
		}
	}
	
	public static void tulisLangkah(int jumlahCakram, char pasakAwal, char pasakAkhir, char pasakBantu) {
		if(jumlahCakram == 1) {	/* base case */
			System.out.println(++step +" Pindahkan sebuah cakram "+jumlahCakram+" dari pasak "+pasakAwal+
                             " ke pasak "+pasakAkhir);
		}
		else {
			/* pindahkan N-1 cakram dari pasak awal ke pasak bantu */
			tulisLangkah(jumlahCakram - 1, pasakAwal, pasakBantu, pasakAkhir);	
			/* pindahkan cakram terakhir dari pasak awal ke pasak akhir */
			System.out.println(++step +" Pindahkan sebuah cakram "+jumlahCakram+" dari pasak "+pasakAwal+
                             " ke pasak "+pasakAkhir);
			/* pindahkan N-1 cakram dari pasak bantu ke pasak akhir */
			tulisLangkah(jumlahCakram - 1, pasakBantu, pasakAkhir, pasakAwal);
		}
	}
	
	public static boolean integerKah(String str) {
		int arg_ = -999;
		try { arg_ = Integer.parseInt(str); }
		catch(Exception ex) { }
		if(arg_ != -999) { return true; }
		else { return false; }
	}
}

Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at WordPress.com.

%d bloggers like this: