ハノイの塔とは
ハノイの塔(ハノイのとう、Tower of Hanoi)はパズルの一種。
ルール
以下のルールに従ってすべての円盤を右端の杭に移動させられれば完成。
- 3本の杭と、中央に穴の開いた大きさの異なる複数の円盤から構成される。
- 最初はすべての円盤が左端の杭に小さいものが上になるように順に積み重ねられている。
- 円盤を一回に一枚ずつどれかの杭に移動させることができるが、小さな円盤の上に大きな円盤を乗せることはできない。
数学的な見地
上記のルールに沿って、整理された状態からだと、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
実行イメージ
やり残し
- numpyをもっと駆使して、縦方向で表示したい。
- 他のアルゴリズム、パズルも視覚的(webページ等)に表現してみたい。