Source Code Program Menara Hanoi Menggunakan C#

Source Code Program Menara Hanoi Menggunakan C#
Photo by Farzad Mohsenvand / Unsplash

Menara Hanoi adalah salah satu masalah rekursi klasik dalam dunia pemrograman. Konsepnya sederhana, tetapi butuh pemahaman rekursi yang kuat untuk menyelesaikannya. Di artikel ini, kita akan membahas:
Apa itu Menara Hanoi?
Bagaimana algoritmanya bekerja?
Source code lengkap menggunakan C#

Yuk, langsung kita bahas!

Apa Itu Menara Hanoi?

Menara Hanoi adalah permainan matematika yang terdiri dari:

  • Tiga tiang (A, B, C)
  • Sejumlah cakram dengan ukuran berbeda
  • Aturan permainan:
    1. Hanya satu cakram yang boleh dipindahkan dalam satu waktu.
    2. Tidak boleh menempatkan cakram besar di atas cakram kecil.
    3. Harus memindahkan semua cakram dari tiang awal (A) ke tiang tujuan (C).

Misalnya, kalau kita punya 3 cakram, langkah-langkah pemindahannya bisa terlihat seperti ini:

  1. Pindahkan cakram 1 dari A → C
  2. Pindahkan cakram 2 dari A → B
  3. Pindahkan cakram 1 dari C → B
  4. Pindahkan cakram 3 dari A → C
  5. Pindahkan cakram 1 dari B → A
  6. Pindahkan cakram 2 dari B → C
  7. Pindahkan cakram 1 dari A → C

Untuk N cakram, jumlah langkah minimum = ( 2^N - 1 ).

Source Code Menara Hanoi Menggunakan C#

using System;

class MenaraHanoi
{
    // Fungsi rekursif untuk memindahkan cakram
    static void Hanoi(int jumlahCakram, char asal, char tujuan, char bantu)
    {
        if (jumlahCakram == 1)
        {
            Console.WriteLine($"Pindahkan cakram dari {asal} ke {tujuan}");
            return;
        }

        // Pindahkan n-1 cakram dari asal ke tiang bantu
        Hanoi(jumlahCakram - 1, asal, bantu, tujuan);
        
        // Pindahkan cakram terbesar ke tujuan
        Console.WriteLine($"Pindahkan cakram dari {asal} ke {tujuan}");

        // Pindahkan n-1 cakram dari tiang bantu ke tujuan
        Hanoi(jumlahCakram - 1, bantu, tujuan, asal);
    }

    static void Main()
    {
        Console.Write("Masukkan jumlah cakram: ");
        int jumlahCakram = Convert.ToInt32(Console.ReadLine());

        Console.WriteLine("\nLangkah-langkah pemindahan:");
        Hanoi(jumlahCakram, 'A', 'C', 'B');

        Console.WriteLine($"\nTotal langkah yang diperlukan: {Math.Pow(2, jumlahCakram) - 1}");
    }
}

Penjelasan Kode

📌 Hanoi(jumlahCakram, asal, tujuan, bantu)
→ Fungsi rekursif untuk memindahkan cakram dari tiang asal ke tujuan, menggunakan bantu sebagai perantara.

📌 Base Case:
→ Jika jumlah cakram hanya 1, langsung pindahkan ke tiang tujuan.

📌 Recursive Case:
→ Pindahkan n-1 cakram ke tiang bantu.
→ Pindahkan cakram terbesar ke tujuan.
→ Pindahkan n-1 cakram dari tiang bantu ke tujuan.

📌 Console.WriteLine()
→ Menampilkan langkah-langkah perpindahan cakram ke layar.

Contoh Output Program

Jika kita menjalankan program dengan 3 cakram, hasilnya seperti ini:

Masukkan jumlah cakram: 3

Langkah-langkah pemindahan:
Pindahkan cakram dari A ke C
Pindahkan cakram dari A ke B
Pindahkan cakram dari C ke B
Pindahkan cakram dari A ke C
Pindahkan cakram dari B ke A
Pindahkan cakram dari B ke C
Pindahkan cakram dari A ke C

Total langkah yang diperlukan: 7

Program berhasil menyelesaikan Menara Hanoi untuk 3 cakram dalam 7 langkah! 🎉

Kenapa Menggunakan Rekursi?

Menara Hanoi adalah masalah yang sangat cocok untuk rekursi karena:

  1. Bisa dibagi menjadi sub-masalah yang lebih kecil.
  2. Setiap langkah bergantung pada hasil sebelumnya.
  3. Solusinya lebih bersih dibanding loop biasa.

Kesimpulan

  • Menara Hanoi adalah contoh klasik rekursi dalam pemrograman.
  • Algoritmanya memindahkan cakram menggunakan tiga tiang, mengikuti aturan tertentu.
  • Jumlah langkah minimum untuk menyelesaikan Menara Hanoi = 2N−12^N - 1.
  • C# bisa digunakan untuk menyelesaikan Menara Hanoi dengan pendekatan rekursif yang simpel.

Dengan memahami kode ini, kamu sudah mempelajari konsep rekursi yang penting dalam pemrograman C#!

Read more