始める無料で始める

ハノイの塔

この演習では、再帰アルゴリズムを使ってハノイの塔パズルを作成します。このゲームの目的は、3本の棒のうち1本にあるすべての輪を別の棒に移動させることです。ルールは以下のとおりです。

  • 一度に動かせる輪は1つだけです。
  • スタックの一番上にある輪のみを取り出し、別のスタックの上に置けます。
  • 小さい輪の上に大きい輪を置くことはできません。

ハノイの塔の画像

この4つの輪と「A」「B」「C」と名付けられた3本の棒を使ったゲームを実行するアルゴリズムがあります。このコードには2つのバグがあります。実行すると、最大再帰深度を超えてコンソールがクラッシュしてしまいます。バグを見つけて修正してみましょう。

この演習はコースの一部です

Pythonで学ぶデータ構造とアルゴリズム

コースを見る

演習の手順

  • ベースケースを修正してください。
  • hanoi()関数の呼び出しを修正してください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

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)
コードを編集して実行