Menara Hanoi
Nama : Hendrio V.P.
NPM : 1135010004.
Menara-menara hanoi adalah masalah populer. Anda memiliki tiga tiang dan disk n yang muat di kutub. Semua disk memiliki ukuran yang berbeda. Mereka ditumpuk di tiang 1 diperintah ukuran mereka. Disk terbesar adalah pada bagian bawah, yang terkecil adalah di atas.
Tugas kita adalah untuk memindahkan disk semua dari tiang 1 ke tiang 3 dengan pembatasan berikut.
Hanya satu disk dapat dipindahkan
Sebuah disk yang lebih besar tidak dapat ditempatkan pada disk yang lebih kecil.
Algoritma rekursif bekerja seperti berikut: pindah n-1 disk dari tiang awal ke tiang yang bukan awal atau sasaran (menengah), disk bergerak n ke kutub target dan kemudian pindah n-1 disk dari tiang menengah ke sasaran tiang. N-1 disk dipindahkan secara rekursif.
Menara Hanoi (juga disebut Menara Brahma atau Lucas Tower, [1] dan terkadang pluralised) adalah permainan matematika atau teka-teki. Ini terdiri dari tiga batang, dan sejumlah disk dengan ukuran yang berbeda yang dapat meluncur ke batang apa pun. Teka teki ini dimulai dengan disk dalam tumpukan rapi dalam urutan dari ukuran pada satu tongkat, yang terkecil di bagian atas, sehingga membuat bentuk kerucut.
Tujuan dari teka-teki adalah untuk memindahkan seluruh tumpukan ke batang lain, mematuhi aturan berikut:
Hanya satu disk dapat dipindahkan pada suatu waktu.
Setiap langkah terdiri dari mengambil disk atas dari salah satu batang dan menggesernya ke batang yang lain, di atas disk lain yang mungkin sudah ada pada batang itu.
Disk Tidak dapat ditempatkan di atas sebuah disk lebih kecil.
Dengan tiga disk, teka-teki dapat diselesaikan dalam tujuh langkah.
Towers of hanoi is a popular issue. You have three poles and n are fit disk at the poles.All disks have a different size. They are stacked in a pile the size of their orders. The largest disk is on the bottom, the smallest is on top.
Our task is to move all the disks from pole 1 to pole 3 with the following restrictions.
Only one disk can be moved
A larger disk can not be placed on a smaller disk.
Recursive algorithm works as follows: move n-1 disks from pole to pole is not thebeginning of the initial or target (secondary), the disk moves to the poles n target andthen move n-1 disks from the middle pole to pole target. N-1 disks removed recursively.
Tower of Hanoi (also called the Tower of Brahma or the Lucas Tower, [1] and sometimes pluralised) is a mathematical game or puzzle. It consists of three rods, and a number of disks of different sizes which can slide into any trunk. This puzzle begins with a disk in a neat pile in descending order of size on one rod, the smallest at the top, thus making a conical shape.
The aim of the puzzle is to move the entire stack to another rod, obeying the following rules:
Only one disk can be moved at a time.
Each step consists of taking the disc from one of the trunk and moving to another rod,on the other disks that may already exist on the trunk.
Disk can not be placed above a smaller disk.
With three disks, the puzzle can be completed in seven steps.
Nama : Hendrio V.P.
NPM : 1135010004.
Menara-menara hanoi adalah masalah populer. Anda memiliki tiga tiang dan disk n yang muat di kutub. Semua disk memiliki ukuran yang berbeda. Mereka ditumpuk di tiang 1 diperintah ukuran mereka. Disk terbesar adalah pada bagian bawah, yang terkecil adalah di atas.
Tugas kita adalah untuk memindahkan disk semua dari tiang 1 ke tiang 3 dengan pembatasan berikut.
Hanya satu disk dapat dipindahkan
Sebuah disk yang lebih besar tidak dapat ditempatkan pada disk yang lebih kecil.
Algoritma rekursif bekerja seperti berikut: pindah n-1 disk dari tiang awal ke tiang yang bukan awal atau sasaran (menengah), disk bergerak n ke kutub target dan kemudian pindah n-1 disk dari tiang menengah ke sasaran tiang. N-1 disk dipindahkan secara rekursif.
Menara Hanoi (juga disebut Menara Brahma atau Lucas Tower, [1] dan terkadang pluralised) adalah permainan matematika atau teka-teki. Ini terdiri dari tiga batang, dan sejumlah disk dengan ukuran yang berbeda yang dapat meluncur ke batang apa pun. Teka teki ini dimulai dengan disk dalam tumpukan rapi dalam urutan dari ukuran pada satu tongkat, yang terkecil di bagian atas, sehingga membuat bentuk kerucut.
Tujuan dari teka-teki adalah untuk memindahkan seluruh tumpukan ke batang lain, mematuhi aturan berikut:
Hanya satu disk dapat dipindahkan pada suatu waktu.
Setiap langkah terdiri dari mengambil disk atas dari salah satu batang dan menggesernya ke batang yang lain, di atas disk lain yang mungkin sudah ada pada batang itu.
Disk Tidak dapat ditempatkan di atas sebuah disk lebih kecil.
Dengan tiga disk, teka-teki dapat diselesaikan dalam tujuh langkah.
Towers of Hanoi
Our task is to move all the disks from pole 1 to pole 3 with the following restrictions.
Only one disk can be moved
A larger disk can not be placed on a smaller disk.
Recursive algorithm works as follows: move n-1 disks from pole to pole is not thebeginning of the initial or target (secondary), the disk moves to the poles n target andthen move n-1 disks from the middle pole to pole target. N-1 disks removed recursively.
Tower of Hanoi (also called the Tower of Brahma or the Lucas Tower, [1] and sometimes pluralised) is a mathematical game or puzzle. It consists of three rods, and a number of disks of different sizes which can slide into any trunk. This puzzle begins with a disk in a neat pile in descending order of size on one rod, the smallest at the top, thus making a conical shape.
The aim of the puzzle is to move the entire stack to another rod, obeying the following rules:
Only one disk can be moved at a time.
Each step consists of taking the disc from one of the trunk and moving to another rod,on the other disks that may already exist on the trunk.
Disk can not be placed above a smaller disk.
With three disks, the puzzle can be completed in seven steps.
Source 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;
}
}
source :




