ハノイの塔課題を遊ぶ関数 hanoi

ソースファイル:hanoi
webから直接読み込む場合、以下のコードをRで実行
source("http://noucobi.com/Rsource/hanoi.R")

タイトルのまんま、ハノイの塔課題を遊ぶ関数です。
塔の段数を引数として実行すると、コンソールでハノイの塔課題をプレイできます。
「なぜわざわざRでそんなことwww」って?
そこにRがあるからです。

> hanoi(3)
        1      
        2      
        3      
        -------
        Z  X  C

下部のZ・X・Cが、塔をたてる3つの場所にあたります。
そのうえに書いてある数字が、塔のパーツ(ディスク)です。
小さい数字ほど、小さいディスクを意味しています。

ゲームの目的は、塔の位置をZからCへ動かすこと。
「どこから」「どこへ」動かすのかをZ・X・C(小文字でもOK)のキー押しによって選択し、ゲームを進めていきます。
(Z・X・Cは、キーボードの左下3つです。)
ただしディスクは、それ自身よりも小さいディスクの上には載せることができません。
つまり塔は、つねに先細りになってないとダメ。

FROM : z
TO   : c
        2      
        3     1
        -------
        Z  X  C

FROM : z
TO   : x
        3  2  1
        -------
        Z  X  C

「どこから」「どこへ」の一方ないし両方を空欄にすると、"Retire?"と聞かれ、ここで"Y"または"y"を選ぶと終了します。
(もちろんRプログラムなので、Escキーでも終了できます。)
また以下のような入力は無効になります。
・ディスクがないところから動かそうとする
・「どこから」と「どこへ」が同じ場所
・Z・X・C以外の文字を選択した
それからもちろん
・大きいディスクを小さいディスクの上に置こうとした

グラフィカルにしようかと思ったけど、ただの思いつきに時間かけてもしょうがないので、こうなりました。
ホントに思いつきなので、あしからず。


■更新履歴■

09.04.08 ver.1.00
公開