gclによる8パズル解決

暫定的なコードですが,発見的探索を学ぶための一歩として.
プログラムソースコード

動作のさせ方

  • (8-puzzle-solve-and-show 〈8パズルの局面のリスト表現〉 〈解法〉)
    ●8パズルの局面のリスト表現:(x22 x11 x12 x13 x23 x33 x32 x31 x21)
    局面:
    x11 x12 x13
    x21 x22 x23
    x31 x32 x33
    と対応する.空白カードは0で表す.
    (例)
    2 4 6
    3    5
    7 1 8
    の リスト表現は
    (0 2 4 6 5 8 1 7 3)
    とする.
    ●解法:次のアトムの中から選ぶ:
    breadth-first, hill-climbing, best-first, a-star
    ●例:
    (8-puzzle-solve-and-show ‘(3 2 4 0 6 5 7 8 1 3) ‘a-star)

実行ログ

  • (8-puzzle-solve-and-show ‘(3 2 4 0 6 5 7 8 1) ‘hill-climbing)
    → (log1)
  • (8-puzzle-solve-and-show ‘(0 2 4 6 5 8 1 7 3) ‘a-star)
    (時間がかかる)→(log2)

実装ノート

  • 各探索アルゴリズムは,8パズルソルバーに組み込みであり,独立したコンポーネントになっていません.解のみを出力する単純版です.

拡張の可能性

  • scheme版を参考に探索過程を表示できるようにすることが考えられます.