Membuat Program Menara Hanoi pada Java
Assalamualaikum Warahmatullahi Wabarakatuh.
Pada postingan ini saya akan membahas sebuah puzzel yang disebut Towers of Hanoi, Towers of Hanoi merupakan sebuah problem yang biasanya kita jumpai pada sebuah kompetisi komputer programming atau sebuah test ujian, tutorial ini dibuat sebagai referensi untuk kalian yang ingin mengasah logika mengenai problem solving.
Materi Yang Harus Kalian Pelajari Sebelumnya:
- Apa Itu Method Void, Return, dan Static pada Java
- Belajar Algoritma Rekursif pada Java
- Statement if dan else pada Pemrograman Java
Towers of Hanoi
Ada 3 buah tiang yaitu A, B, C dan beberapa Disc/Cakram dengan ukuran yang berbeda beda, dari yang terkecil hingga yang terbesar, semua cakram tersebut ditematkan pada tiang A, dengan Cakram yang terbesar dibagian paling bawah dan yang terkecil paling atas, cakram tersebut tersusun secara rapi dan terurut dari terkecil hinggal terbesar.
Goal dari permasaahan ini adalah kita harus memindahkan semua Disc/Cakram dari Tiang A ke Tiang C, kita hanya bisa memindahkan satu disk pada satu waktu, dimulai dari Cakram paling besar harus berada di paling bawah dan terkecil di paling atas, Tiang B digunakan sebagai perantara atau tiang bantu sebagai jembatan antara tiang A dan Tiang C.
Cakram yang lebih besar tidak boleh diletakan diatas Cakram yang lebh kecil dan Carkam yang lebih kecil tidak boleh diletakan dibawah cakram yang lebh besar, Semua cakram harus diletakan sedemikian rupa pada tiang C.
Solusi untuk memindahkan dari Tiang A ke Tiang C, ada 7 langkah:
Langkah 1:
Pindahkan Cakram 1 dari A ke C
Langkah 2:
Pindahkan Cakram 2 dari A ke B
Langkah 3:
Pindahkan Cakram 1 dari C ke B
Langkah 4:
Pindahkan Cakram 3 dari A ke C
Langkah 5:
Pindahkan Cakram 1 dari B ke A
Langkah 6:
Pindahkan Cakram 2 dari B ke C
Langkah 7:
Pindahkan Cakram 1 dari A ke C
Maka jika kita gambarkan hasilnya akan terlihat seperti ini:
Java Program
Solusi untuk teka-teki Menara Hano pada Java seperti di bawah ini:
package WILDAN_TECHNO_ART;
import java.util.Scanner;
public class towers_of_hanoi {
static int move = 1;
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Masukan Jumlah Cakram/Disc: ");
int Cakram = input.nextInt();
hanoi (Cakram, 'A', 'B', 'C');}
static void hanoi (int Cakram, char awal, char bantu, char tujuan){
if (Cakram >= 1) {
hanoi (Cakram-1, awal, tujuan, bantu);
move(Cakram, awal, tujuan);
hanoi (Cakram-1, bantu, awal, tujuan);
}
}
static void move (int step, char awal, char tujuan){
System.out.println("Langkah "+move);
move++;
System.out.print("Pindahkan Cakram "+step);
System.out.print(" dari "+awal);
System.out.println(" ke "+tujuan);
}
}
Demo:
Jika kalian sudah menguasai algoritma Rekursif pada java, pasti pada souce code tersebut akan lebih mudah untuk dipahami, pada tutorial ini saya tidak bisa menjelaskan program tersebut secara detail, maka dari itu saya mohon maaf.
Wassalamualaikum Warahmatullahi Wabarakatuh.