PythonはTowerofHanoiゲームを解決します

この記事の例では、参考のために、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

PythonはTowerofHanoiゲームを解決します
Pythonはスネークゲームのソースコードを実装しています
Pythonは釣りマスターのゲーム実装を書きます
Pythonの基盤を統合する(4)
Python(7)の基盤を統合する
pythonはゲームという言葉を推測します
Python(6)の基盤を統合する
Pythonは推測ゲームを実現します
Python(5)の基盤を統合する
Pythonの基盤を統合する(3)
Pythonは実店舗のゲームを実装しています
pythonでのwheelの使用法
Pythonは単にスネークゲームを実装します
Pythonは中国語の4つの車輪を処理します
地主取引のPythonシミュレーション
Pythonの用途は何ですか
Python文字列プーリングの前提
Python3.8の新機能の秘密
Pythonの父がMicrosoftに加わる
python accesshdfsの操作
pythonでのタプルの使用法
pythonを実行するメソッドを終了します
pythonでのrbの意味を理解する
Pythonはスタックの構造を実装できますか?
pythonインタラクティブモードの基本を学ぶ
pythonの下部にあるロジスティック回帰
pythonの複数のバージョンの競合を解決します
python変数の範囲は何ですか
Pythonは分数シーケンスの合計を実装します
Pythonの基礎を学ぶ2日間
pythonのid関数は何ですか
Pythonの基本的な実際の戦闘-年齢ゲームを推測する
python3のピップパスはどこにありますか
Centos8.1.1911はyumの再インストールの問題を解決します
Python言語の本質:Itertoolsライブラリ
python言語の利点は何ですか
pythonインスタンス化オブジェクトの特定のメソッド
python3はマスク描画の機能を実現します
python開発の見通しは何ですか
pythonの関数本体は何ですか
pythonインポートライブラリの特定の方法
pythonの複数のバージョンの競合を解決します
pythonでのadbの機能は何ですか
Python super()メソッドの原理の詳細な説明
javaとpythonの構文の違い
Python3.9の7つの機能
Pythonは学生管理システムの開発を実現します
PythonはDoudizhuでカードのシャッフルを実装します
pythonでのリストの意味と使用法
起動エラーを実行しているpythonの問題を解決します
python辞書の値を変更できますか?
Pythondecimalモジュールの使用法の詳細な説明
27歳でパイソンを学ぶのはどうですか?
2.1 Pythonインタープリター(pythonインタープリター)
ubuntuでpythonをアンインストールした結果、非常に
パイソンを使って航空機戦争ゲームを実現する
[898] pythonは2つのリストの共通部分を取得します|ユニオン|違い
Python関数パラメータ分類の原理の詳細な説明
エンタープライズ言語に対するpythonの利点は何ですか
Python2とPython3の違いの簡単な要約
Pythonタイマースレッドプールの原理の詳細な説明