Zacznij terazZacznij za darmo

Wieże Hanoi

W tym ćwiczeniu zaimplementujesz łamigłówkę Wież Hanoi za pomocą algorytmu rekurencyjnego. Celem gry jest przeniesienie wszystkich dysków z jednego z trzech prętów na inny, zgodnie z następującymi zasadami:

  • Jednocześnie można przenosić tylko jeden dysk.
  • Można zdjąć wyłącznie górny dysk ze stosu i umieścić go na szczycie innego stosu.
  • Nie można kłaść większego dysku na mniejszym.

Picture of the game Tower of Hanoi

Przedstawiony algorytm to implementacja tej gry z czterema dyskami i trzema prętami o nazwach „A", „B" i „C". Kod zawiera dwa błędy. Jeśli go uruchomisz, konsola zgłosi błąd – zostanie przekroczona maksymalna głębokość rekurencji. Czy uda ci się znaleźć usterki i je naprawić?

To ćwiczenie jest częścią kursu

Struktury danych i algorytmy w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Popraw przypadek bazowy.
  • Popraw wywołania funkcji hanoi().

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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)
Edytuj i uruchom kod