ペグ・ソリティアもしくはペグ・ソリテール、ソリタリアをJavaScript上でシミュレートするライブラリ作りました。ついでに盤面を与えたら解法を計算するアルゴリズムも書きました。
手でどうやって解けばいいのかについては本記事では扱いません。
http://github.com/pandanoir/solitaire
プログラムの使い方
- 上のライブラリを読み込む
- ゲームボードを作成
- 解く
ライブラリを読み込む
まず上のGitHubリポジトリのmain.jsを読み込んでください。ImmutableJSをnpm使ってインストールしておくことも忘れずに。
面倒だったら上のリポジトリをダウンロードして$ npm install
でOKです(これも面倒か)。
ボードを作る
そしたらボードの初期配置を作成します。
これを使うと早いです。 作成した2次元配列をImmutable.fromJS()でImmutable Objectに変換します。
いよいよ解く
getPiece()に出来たImmutable Objectを渡して返り値を取得してください。
あとはsolve()にそのボードとgetPiece()の返り値を渡すと自動で解きます。
しかし遅い
イギリス式ボード(wiki参照)を解こうとするとやけに時間がかかります。
…一応小さいサイズのボードで検証したしプログラムも大丈夫そうなので時間がかかるのはバグのせいではないと思います。
解き終わると解法が終わりの手から書かれた配列が返されます。再帰関数で定義したので解法が逆順なのはお許しください…
誰かゲーム作って
…とまあここまで作って無事解けるようにはなったのですが、ゲームをまだ作ってません。どなたか作ってください。