この記事の例では、参考のために、Tower ofHanoiゲームを解決するpythonの特定のコードを共有しています。具体的な内容は次のとおりです。
1.問題の定義
Baidu百科事典の定義:ハノイの塔(別名ハノイの塔)は、インドの古代の伝説に由来する教育玩具です。ブラフマが世界を創造したとき、彼は3本のダイヤモンドの柱を作ったと言われています.1本の柱に64枚の金色の円盤が小さいものから大きいものへと積み上げられました。ブラフマは、ピラーの1つを使用して、64個のゴールデンディスクを3番目のピラーに再配置するようにブラフミンに命じました。また、小さな金色の円盤上で拡大できない金色の円盤は、3本の柱の間で一度に1枚の円盤しか移動できないと規定されています。
たとえば、ゴールデンディスクのピースが3つしかない場合、ゲームのルールを満たすには、次の図に示すように、8つのステップで完了する必要があります。
2、コードの実装
# y列を使用してn個のプレートをx列からz列に移動します
def hanoi(n, x, y, z):
count =0if n ==1: #再帰的終了
print(x,' -- ', z)return1else:
# nの前-1つのプレートがz列の助けを借りてx列からy列に移動されます
count +=hanoi(n -1, x, z, y) #再帰呼び出し
# 下部の1プレートをxピラーからzピラーに移動します
count +=hanoi(1, x, y, z)
# n-1つのプレートがx列の助けを借りてy列からz列に移動されます
count +=hanoi(n -1, y, x, z) #再帰呼び出し
return count
def main():
hanoi_level =input("ハノイの塔の階数を入力してください:")print("移動の総数は%d"%hanoi(int(hanoi_level),'X','Y','Z'))if __name__ =='__main__':main()
ゴールデンディスクに4つのレイヤーがある場合、コードの出力結果は次のようになります。
ハノイの塔の階数を入力してください:4
X -- Y
X -- Z
Y -- Z
X -- Y
Z -- X
Z -- Y
X -- Y
X -- Z
Y -- Z
Y -- X
Z -- X
Y -- Z
X -- Y
X -- Z
Y -- Z
総移動回数は15回です
以上が本稿の内容ですので、皆様のご勉強に役立てていただければ幸いです。
Recommended Posts