ハノイの塔の由来や、ルール、解き方のアルゴリズムは省略します。
hanoi.hs
実質3行のプログラムです。
haskellが提供する再帰とdo記法で極めて簡潔に書くことができます。
実行例
$ runghc hanoi.hs 3
A-B
A-C
B-C
A-B
C-A
C-B
A-B
最短の解き手順を表示します。
円盤3枚の場合です。
A-Bというのは塔Aの一番上の円盤を塔Bに移動するという意味です。
GUI版
$ runghc hanoi.hs 3 | runghc guihanoi.hs 3 100
labelhanoi.hsへの第2引数はタイミングです。ミリ秒で指定します。
同じ引数を渡すのは面倒なのでhanoi という名前でスクリプトを書いておきます。
runghc hanoi.hs $1 | runghc guihanoi.hs $1 $2
$ ./hanoi 9 500
コンソール版
スクリプト
runghc hanoi.hs $1 | runghc -XFlexibleContexts doHanoi.hs $1
実行例
./dohanoi 64
こちらも参照ください。
0 件のコメント:
コメントを投稿