ハノイの塔

ハノイの塔というパズルゲームがある。

ハノイの塔(移動前)
Tower of Hanoi - start

A, B, C 3本の棒があり、そのうちのAに円盤が何枚か挿してある。 この円盤すべてを別の棒に移動する。

ハノイの塔(移動完了後)
Tower of Hanoi - goal

ただし、円盤すべてをまるごと動かしてよいわけではなく、以下の規則に従 わなければならない。

  1. 一度に動かしてよいのは1枚だけ

  2. ひとつの円盤の上にはそれより大きな円盤を置いてはいけない

このパズルを解くRubyプログラムを作ってみよう。

プログラムを作りやすいように円盤に番号を付けて管理する。

ハノイの塔(番号付き)
Tower of Hanoi - with discs numbered

Rubyプログラムを起動すると、次のように教えてくれるものとする。

1番の円盤 を A から C に移動しなさい
2番の円盤 を A から B に移動しなさい
1番の円盤 を C から B に移動しなさい

この例は分かりやすくするために、2枚だけで示しているが、実際に作るプロ グラムは板が何枚でも手順を教えてくれるものである。 このようなプログラム hanoi.rb を作ってみよう。

問題: ハノイの塔を解き、その手順を教えてくれる Ruby プログラムは だいたい何行くらいになると思うか、直感で答えよ。


本日の目次