LoginSignup
2
1

More than 5 years have passed since last update.

Pythonでハノイの塔を再現

Last updated at Posted at 2019-04-22

ハノイの塔とは

ハノイの塔(ハノイのとう、Tower of Hanoi)はパズルの一種。
500px-Tower_of_Hanoi.jpeg

ルール

以下のルールに従ってすべての円盤を右端の杭に移動させられれば完成。

  • 3本の杭と、中央に穴の開いた大きさの異なる複数の円盤から構成される。
  • 最初はすべての円盤が左端の杭に小さいものが上になるように順に積み重ねられている。
  • 円盤を一回に一枚ずつどれかの杭に移動させることができるが、小さな円盤の上に大きな円盤を乗せることはできない。

Tower_of_Hanoi_4.gif

数学的な見地

上記のルールに沿って、整理された状態からだと、n枚の円盤すべてを移動させるにかかる手数は、(2n − 1)の式で計算可能である。

参考

https://ja.wikipedia.org/wiki/ハノイの塔

思いついた経緯

もともと、最近ハマっていたパズルゲームでもあり、
所持していた書籍でも解説されていたが、殆どが、手数の計算についてであったので、
視覚的に、ハノイ盤の動きを再現できるか?、実際に計算結果と同じになるか?を目で確認したく、着手しました。

github

github.com/biz-nakashima001/python_hanoi

実行方法

pythonスクリプト hanoi.pyを起動後、
hanoiの数を聞かれるので、希望の段数を入力して下さい。

その後、予測手数の計算結果が出力されるので、
確認後、スリープ時間を入力して下さい。
1秒単位で設定でき、スリープ不要なら0秒を設定して下さい。

python3 hanoi.py 
hanoiの数<: 6
予想手数: 2^n -1 ->  63
スリープ(秒)<: 1

実行イメージ

スクリーンショット 2019-04-22 10.07.16.png

スクリーンショット 2019-04-22 13.10.55.png

やり残し

  • numpyをもっと駆使して、縦方向で表示したい。
  • 他のアルゴリズム、パズルも視覚的(webページ等)に表現してみたい。

参考書籍

2
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1