🗼 ハノイの塔

円盤を1枚ずつ別の杭へ移し替える定番の思考パズルです。一度に1枚だけ・大きい円盤は小さい円盤の上に置けないというルールで、左端の杭の円盤を全部、右端の杭へ移せばクリア。3〜8枚を選べ、手数とその枚数の最小手数(2n−1)を表示します。枚数別のベスト手数を端末内に保存します。

設定と操作

円盤の枚数

枚数を変えると盤面がリセットされます。

手数0 最小手数15 ベスト—

盤面

移動元の杭をタップ→移動先の杭をタップで円盤を移します。大きい円盤は小さい円盤の上には置けません。パソコンでは杭を選んで Enter、または 1・2・3 キーでも操作できます。

解説

ハノイの塔は、大きさの異なる複数の円盤と3本の杭を使う、19世紀フランスの数学者エドゥアール・リュカが考案した古典的な思考パズルです。ルールはとてもシンプルで、(1) 一度に動かせるのは各杭の一番上にある円盤1枚だけ、(2) 小さい円盤の上に大きい円盤を置いてはいけない、の2つだけ。最初に左端の杭へ「下ほど大きく・上ほど小さい」順に積まれた円盤を、この2つのルールを守りながら全て別の杭(本ツールでは右端)へ移し替えられればクリアです。本ツールは3枚から8枚まで枚数を選べ、すべての処理はブラウザ内で完結し外部へは何も送信しません。

n枚のときの最小手数は 2^n − 1 手であることが知られています。例えば3枚なら7手、4枚なら15手、5枚なら31手、8枚なら255手です。なぜこの式になるのかは、パズルの「再帰的な構造」から説明できます。n枚を目的の杭へ移すには、まず上のn−1枚を作業用の杭へ退避させ(f(n−1)手)、次に一番大きい1枚を目的の杭へ移し(1手)、最後に退避させたn−1枚を目的の杭へ積み直す(f(n−1)手)必要があります。したがって f(n) = 2·f(n−1) + 1 となり、f(1)=1 から解くと f(n) = 2^n − 1 が得られます。

この「n−1枚を退避 → 最大の1枚を移動 → n−1枚を上に積み直す」という考え方が、そのまま解き方のコツになります。いきなり全体を動かそうとせず、「一番大きい円盤を最終的な位置へ運ぶには何をどければよいか」を一段ずつ逆算していくと、迷わず最小手数で解けます。もう1つの実用的なテクニックとして、枚数が偶数なら最初の1枚を「作業用(中央)の杭」へ、奇数なら「目的(右)の杭」へ動かし、以降は最小の円盤を常に一定方向に回す、という手順でも最短で解けます。本ツールの「自動デモ」は、この最適手順を忠実に再生します。

有名な言い伝えに「64枚のハノイの塔」があります。インドの寺院で僧侶が64枚の黄金の円盤を移し続け、それが完成したとき世界が終わる、という伝説です。64枚の最小手数は 2^64 − 1 = 約1844京手。仮に1秒に1手動かしても、完了までにおよそ5845億年かかる計算で、宇宙の年齢をはるかに超えます。小さな枚数で遊びながら、手数が枚数1つで倍々に増えていく「指数的な増え方」を体感できるのも、このパズルの面白さです。

よくある質問

ハノイの塔とはどんなパズルですか?

大きさの違う円盤を積んだ杭が3本あり、円盤を1枚ずつ別の杭へ移し替えて、最初に積まれていた山をまるごと別の杭へ動かすパズルです。『一度に1枚だけ』『大きい円盤を小さい円盤の上に置かない』という2つのルールだけで遊べます。

最小手数(何手で解けるか)はどう決まりますか?

円盤がn枚のときの最小手数は 2^n − 1 手です。3枚=7手、4枚=15手、5枚=31手、6枚=63手、7枚=127手、8枚=255手。本ツールはプレイ中の手数と、その枚数の最小手数を並べて表示するので、最短にどれだけ近いか一目で分かります。

解き方のコツはありますか?

『上のn−1枚をいったん別の杭へ退避 → 一番大きい円盤を目的の杭へ → 退避した山を上に積み直す』と逆算するのが基本です。もしくは、枚数が奇数なら最初の1枚を目的の杭へ、偶数なら作業用の杭へ動かし、最小の円盤を毎回同じ向きに回すと最短で解けます。

自動デモは何をしていますか?

現在の枚数を最小手数(2^n−1手)で解く最適手順を、そのままアニメーションで再生します。詰まったときに『次の一手』の考え方を確認するのに使ってください。再生中はデモ停止ボタンでいつでも止められます。

伝説の『64枚』だと何手かかりますか?

2^64 − 1 = 約1844京6744兆手です。1秒に1手動かしても完了までおよそ5845億年かかり、宇宙の年齢を超えます。だから『塔が完成すると世界が終わる』という言い伝えは、事実上いつまでも終わらないことを表しています。

記録(ベスト手数)は保存されますか?

はい。枚数ごとの自己ベスト手数を、お使いのブラウザのlocalStorageにのみ保存します(キーは端末内のみ)。サーバーには送信されず、ブラウザのデータを消すと記録も消えます。別の端末やブラウザとは共有されません。

スマホでも遊べますか?操作方法は?

遊べます。まず動かしたい円盤のある杭をタップして選び、次に移動先の杭をタップすると円盤が移ります。置けない場所を選ぶと理由が表示されます。パソコンでは杭を選んで Enter、または 1・2・3 キーでも操作できます。

オフラインでも使えますか?

使えます。本ツールは完全に静的で、計算はすべてブラウザ内で行うため通信は不要です。PWAとしてホーム画面に追加すれば、オフラインでも起動して遊べます。