実行結果を先にご覧ください.
目標とするのは
二つの引数 – 最初の引数をハノイの塔の円盤の数, 二つ目の引数を状態表示間の休み時間 (ミリ秒で指定) – を受け取り, ハノイの塔を解く過程の各状態を文字列を使った擬似的な絵で表示するプログラムです.
擬似的な絵は, 杭を文字 ‘|’ の縦の連なりで, 円盤を ‘|’ の両側の文字 ‘-’ の横の連なりで表します.
i番目に小さい円盤は ‘|’ の片側の ‘-’ の長さが i であるとします.
杭の長さは円盤の数, 杭あたりの横幅を 2 × 円盤の数 + 3 として実行時に動的に決定します.
三つの杭と円盤を横に並べて表示し, 最後の行に 6*円盤の数 + 10 個の ‘=’ を表示します.
円盤の数 3 のハノイの塔の初期状態であれば,
-|- | | --|-- | | ---|--- | | =========================
のようになります.