Začněte nyníZačněte zdarma

Hanojské věže

V tomto cvičení implementuješ hádanku Hanojské věže pomocí rekurzivního algoritmu. Cílem hry je přesunout všechny disky z jedné ze tří tyčí na jinou, přičemž platí tato pravidla:

  • V jednom tahu můžeš přesunout vždy jen jeden disk.
  • Vzít můžeš pouze horní disk z některého ze sloupců a položit ho na vrchol jiného sloupce.
  • Větší disk nesmíš položit na menší.

Picture of the game Tower of Hanoi

Ukázaný algoritmus je implementací této hry se čtyřmi disky a třemi tyčemi pojmenovanými 'A', 'B' a 'C'. Kód obsahuje dvě chyby. Pokud ho spustíš, konzole spadne, protože je překročena maximální hloubka rekurze. Dokážeš chyby najít a opravit?

Toto cvičení je součástí kurzu

Datové struktury a algoritmy v Pythonu

Zobrazit kurz

Pokyny k cvičení

  • Oprav základní případ.
  • Oprav volání funkce hanoi().

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

def hanoi(num_disks, from_rod, to_rod, aux_rod):
  # Correct the base case
  if num_disks >= 0:
    # Correct the calls to the hanoi function
    hanoi(num_disks, from_rod, aux_rod, to_rod)
    print("Moving disk", num_disks, "from rod", from_rod,"to rod",to_rod)
    hanoi(num_disks, aux_rod, to_rod, from_rod)   

num_disks = 4
source_rod = 'A'
auxiliar_rod = 'B'
target_rod = 'C'

hanoi(num_disks, source_rod, target_rod, auxiliar_rod)
Upravit a spustit kód