始める無料で始める

ハノイの塔

この演習では、再帰アルゴリズムハノイの塔 パズルを実装します。目的は、次のルールに従って、3本の棒のうち1本に積まれたすべてのディスクを別の棒へ移動することです。

  • 1回に動かせるディスクは1枚だけです。
  • 取り出せるのは各山の一番上のディスクだけで、置くときも別の山の一番上に置きます。
  • 小さいディスクの上に大きいディスクを置いてはいけません。

Picture of the game Tower of Hanoi

ここで示すアルゴリズムは、ディスク4枚、棒3本('A'、'B'、'C')の実装例です。コードには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)
コードを編集して実行