ハノイの塔の解き方(最短手数と公式)
一番小さい円盤を1回おきに同じ向きへ回すと、何段でも最短の2n−1手でそろいます。
ハノイの塔を遊ぶ(無料・3段〜10段)小さい円盤を1回おきに同じ向きへ回す
1234
はじめ:4枚を全部右の棒へ移す
4段の最短は15手(24−1)・4段で遊ぶ
- 回す向きは奇数段なら 左→右→真ん中、偶数段なら 左→真ん中→右
- 2・4・6…手目は小さい円盤以外を動かす(動かせるのは1通りだけ)
3段は7手・4段は15手でそろう
円盤の番号は小さい順。左・真ん中・右は棒です。
3段の答え(7手)
- 1左→右
- 2左→真ん中
- 1右→真ん中
- 3左→右
- 1真ん中→左
- 2真ん中→右
- 1左→右
4段の答え(15手)
- 1左→真ん中
- 2左→右
- 1真ん中→右
- 3左→真ん中
- 1右→左
- 2右→真ん中
- 1左→真ん中
- 4左→右
- 1真ん中→右
- 2真ん中→左
- 1右→左
- 3真ん中→右
- 1左→真ん中
- 2左→右
- 1真ん中→右
最短手数は2n−1(4段なら15手)
円盤が n 枚(n段)なら、2を n 回かけて1を引いた数が最短手数です。
| 段数 | 最短手数 | 1秒に1手なら |
|---|---|---|
| 3段 | 7手 | 7秒 |
| 4段 | 15手 | 15秒 |
| 5段 | 31手 | 31秒 |
| 6段 | 63手 | 1分3秒 |
| 7段 | 127手 | 2分7秒 |
| 8段 | 255手 | 4分15秒 |
| 9段 | 511手 | 8分31秒 |
| 10段 | 1,023手 | 17分3秒 |
n段の手数は「1つ少ない段×2+1」
一番大きい円盤を動かすには、上の円盤を全部よけておく必要があります。
真ん中へ7手
円盤を右へ1手
また7手
=7×2+1
だから1段増えるごとに「2倍+1」。手数に1を足すと倍々になり、n段の最短は 2n−1 手です。
| 段数 | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| 最短手数 | 1 | 3 | 7 | 15 | 31 |
| +1すると | 2 | 4 | 8 | 16 | 32 |
数列の漸化式なら an=2an−1+1 を an+1=2(an−1+1) と変形して解きます。
よくある質問
- 最初の1手はどこへ?
- 奇数段は右の棒、偶数段は真ん中の棒へ一番小さい円盤を動かす
- どうしてこれより短くできない?
- 一番大きい円盤を動かす前とあとに、ほかの円盤を全部1本に集める必要があるから
- それぞれの円盤は何回動く?
- 一番小さい円盤が全体の約半分(2n−1回)。1つ大きくなるごとに半分になり、一番大きい円盤は1回
- 覚え方はほかにある?
- 最短の手順では、奇数番の円盤どうし・偶数番の円盤どうしを重ねない
- 途中の形から最短で解くには?
- 一番大きい円盤から考える。右の棒にあればそのままにし、無ければそれより小さい円盤を全部残りの1本へ寄せてから動かす
- 真ん中の棒へ移すときは?
- 回す向きが逆になる。奇数段なら 左→真ん中→右 の向き
- 棒が4本なら?
- 1〜8枚の最短は 1・3・5・9・13・17・25・33手。1枚ごとの増え方は、2が2回・4が3回・8が4回…と続く
- プログラムではどう書く?
- 「n−1段を真ん中へ・n番を右へ・n−1段を右へ」を同じ関数の中で呼ぶ(再帰)
- ゲームで練習できる?
- 3段〜10段と今日の問題(ばらばらの5枚)。「ヒント」で最短の次の一手が光る