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.

Membuat Program Menara Hanoi pada Java

Materi Yang Harus Kalian Pelajari Sebelumnya:

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.

Problem Solving Menara Hanoi - WILDAN TECHNO ART

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.

Teka teki ini bisa dipecahkan dengan menggunakan Algoritma Rekursif, kalian dapat melihat tutorialnya pada link diatas, untuk sesaat, misalnya kita mempunyai 3 buah Cakram yaitu 1, 2, 3. nomor 1 harus berada paling atas, nomor 2 ditengah dan nomor tiga berada di paling bawah.

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:

Menara Hanoi Finish

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:

Towers of Hanoi Example

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.

Wildan M Athoillah
Wildan M Athoillah Blogger dan spesialis pembuat aplikasi android.