Bu, Tower of Hanoi(Hanoi Kuleleri)’yi uygulamak için bir Python programıdır.
Problem:
Program, kullanıcıdan n disk sayısını sorar ve program, çubuk B kullanarak n diski çubuk A’dan çubuk C’ye taşıma prosedürünü yazdırır.
Problem çözümü:
- n disklerinin sayısını ve kaynak, yardımcı ve hedef mandalların adlarını bağımsız değişken olarak alan işlev hanoi oluşturun.
- Temel durum, disk sayısının 1 olduğu durumdur, bu durumda bir diski kaynaktan hedefe taşıyın ve geri dönün.
- Hedef pimi yardımcı olarak kullanarak n – 1 diski kaynak pimden yardımcı pime taşıyın.
- Kaynakta kalan bir diski hedefe taşıyın.
- Yardımcı pim üzerindeki n – 1 diskleri, kaynak pimi yardımcı olarak kullanarak hedef pime taşıyın.
Program/Kaynak Kodu
İşte Tower of Hanoi’yi uygulamak için bir Python programının kaynak kodu. Programın çıktısı aşağıda gösterilmiştir.
Not: Üst n-1 disklerin kaynak çubuktan Yardımcı çubuğa aktarılması yine yeni bir sorun olarak düşünülebilir ve aynı şekilde çözülebilir.
Kaynak Kod:
# Recursive fonksiyon ile hanoi kuleleri çözümü
def HanoiKuleleri(n , kaynak, hedef, yedek):
if n==1:
print (“Disk 1 Taşı, Kaynak:”,kaynak,” Hedef:”,hedef)
return
HanoiKuleleri(n-1, kaynak, yedek, hedef)
print (“Disk”,n,”Taşı, Kaynak:”,kaynak,” Hedef:”,hedef)
HanoiKuleleri(n-1, yedek, hedef, kaynak)
# Sürücü Kod
n = 4
HanoiKuleleri(n,’A’,’B’,’C’)
# A, C, B çubukların adıdır
# Recursive fonksiyon ile hanoi kuleleri çözümü def HanoiKuleleri(n , kaynak, hedef, yedek): if n==1: print (“Disk 1 Taşı, Kaynak:”,kaynak,” Hedef:”,hedef) return HanoiKuleleri(n–1, kaynak, yedek, hedef) print (“Disk”,n,“Taşı, Kaynak:”,kaynak,” Hedef:”,hedef) HanoiKuleleri(n–1, yedek, hedef, kaynak)
# Sürücü Kod n = 4 HanoiKuleleri(n,‘A’,‘B’,‘C’) # A, C, B çubukların adıdır
|
Çıktı:
Disk 1 Taşı, Kaynak: A Hedef: C
Disk 2 Taşı, Kaynak: A Hedef: B
Disk 1 Taşı, Kaynak: C Hedef: B
Disk 3 Taşı, Kaynak: A Hedef: C
Disk 1 Taşı, Kaynak: B Hedef: A
Disk 2 Taşı, Kaynak: B Hedef: C
Disk 1 Taşı, Kaynak: A Hedef: C
Disk 4 Taşı, Kaynak: A Hedef: B
Disk 1 Taşı, Kaynak: C Hedef: B
Disk 2 Taşı, Kaynak: C Hedef: A
Disk 1 Taşı, Kaynak: B Hedef: A
Disk 3 Taşı, Kaynak: C Hedef: B
Disk 1 Taşı, Kaynak: A Hedef: C
Disk 2 Taşı, Kaynak: A Hedef: B
Disk 1 Taşı, Kaynak: C Hedef: B
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Disk 1 Taşı, Kaynak: A Hedef: C Disk 2 Taşı, Kaynak: A Hedef: B Disk 1 Taşı, Kaynak: C Hedef: B Disk 3 Taşı, Kaynak: A Hedef: C Disk 1 Taşı, Kaynak: B Hedef: A Disk 2 Taşı, Kaynak: B Hedef: C Disk 1 Taşı, Kaynak: A Hedef: C Disk 4 Taşı, Kaynak: A Hedef: B Disk 1 Taşı, Kaynak: C Hedef: B Disk 2 Taşı, Kaynak: C Hedef: A Disk 1 Taşı, Kaynak: B Hedef: A Disk 3 Taşı, Kaynak: C Hedef: B Disk 1 Taşı, Kaynak: A Hedef: C Disk 2 Taşı, Kaynak: A Hedef: B Disk 1 Taşı, Kaynak: C Hedef: B
|