Stack (Yığıt) kullanarak Hanoi Kuleleri oyununu gerçekleyeceğiz. Oyunu ve kurallarını öğrenelim öncelikle.

Hanoi kuleleri, bir matematik oyunu veya bulmacadır. Üç direk ve farklı boyutlarda disklerden oluşur. Bu diskleri dilediğiniz direğe aktarabilirsiniz. Bulmaca bir direkte en küçük disk yukarıda olacak şekilde, küçükten büyüğe direk üstünde dizilmiş olarak başlar. Böylece konik bir şekil oluşmuş olur.

Oyunun kuralları

  • Her hamlede sadece bir disk taşınabilir.
  • Her hamle en üstteki diski direkten alıp diğer bir direğe taşımaktan oluşur. Diğer direkte daha önceden diskler olabilir.
  • Hiçbir disk kendisinden küçük bir diskin üzerine koyulamaz.

 

En kısa ve en hızlı çözümündeki hamle sayısı da 2n-1 ile hesaplanır (n disk sayısı).
4 Diskli bir hanoi oyununun temsili animasyonu şu şekildedir:

Recrusive fonksiyon olarak düşünürsek oyunun ilerleme mantığı şu şekilde olacaktır:

Disk sayısına göre her diske numara verecek olursak ve n diskli oyun için; n-1 olan disk orta kuleye, altındaki disk en uç kuleye, n-1 olan disk sağa taşınır. Artık programımızı gerçekleyebiliriz.

Öncelikle Stack.py ile yığıtımızı gerçekledik.

Hanoi classımızda bizim için en önemlisi movement recrusive fonksiyonumuzdur. Algoritmasını belirlediğimiz hareket işlemleri orada işlenmiştir.

2 diskli oyunun ekran görüntüsü şu şekildedir:

HanoiTower