「ハノイの塔」は, プログラミング言語の学習過程で題材に使われることの多いパズルです.
以下のルールに従ってすべての円盤を右端の杭に移動させられれば完成。
3本の杭と、中央に穴の開いた大きさの異なる複数の円盤から構成される。
最初はすべての円盤が左端の杭に小さいものが上になるように順に積み重ねられている。
円盤を一回に一枚ずつどれかの杭に移動させることができるが、小さな円盤の上に大きな円盤を乗せることはできない。
n枚の円盤すべてを移動させるには 2n – 1 回の手数がかかる。
解法に再帰的アルゴリズムが使用可能な問題として有名であり、プログラミングにおける再帰的呼出しの例題としてもよく用いられる。
出典: Wikipedia
新しいプログラミング言語を学ぼうとするとき, 利用経験のあるライブラリと同じ目的を持った別のライブラリを利用するとき. ほぼ同等の機能をそれぞれに実装してみるということは, 言語やライブラリの比較にもなりますし, 題材自体について既知であれば, 入力方法や出力方法を変える場合の練習にもなります.
この「ほぼ同等の機能」として「パズル『ハノイの塔』を解く過程の表示」は 「文字列 “Hello, World!” を表示する」よりも, もう少し複雑な格好の題材ではないかと思います.
「バベルの塔」は, 地球上に様々な言語があることの理由として創世記で語られる伝説の塔です.
全地は同じ発音、同じ言葉であった。
時に人々は東に移り、シナルの地に平野を得て、そこに住んだ。
彼らは互に言った、「さあ、れんがを造って、よく焼こう」。こうして彼らは石の代りに、れんがを得、しっくいの代りに、アスファルトを得た。
彼らはまた言った、「さあ、町と塔とを建てて、その頂を天に届かせよう。そしてわれわれは名を上げて、全地のおもてに散るのを免れよう」。
時に主は下って、人の子たちの建てる町と塔とを見て、
言われた、「民は一つで、みな同じ言葉である。彼らはすでにこの事をしはじめた。彼らがしようとする事は、もはや何事もとどめ得ないであろう。
さあ、われわれは下って行って、そこで彼らの言葉を乱し、互に言葉が通じないようにしよう」。
こうして主が彼らをそこから全地のおもてに散らされたので、彼らは町を建てるのをやめた。
これによってその町の名はバベルと呼ばれた。主がそこで全地の言葉を乱されたからである。主はそこから彼らを全地のおもてに散らされた。
本稿では, 「ハノイの塔」を解くロジックを複数のプログラミング言語で, その過程を複数の描画方法で実装し, プログラミング言語の特性や, ライブラリの適用可能性を探ります.
日記的ではなく順次加筆修正によりバージョンアップ, および続編執筆していこうと思います.
ここから何かが得られるか分かりませんが, 読みものとしてとても楽しめました.