16面パズルを作ったのですが、シャッフルすると解けないパターンが出てしまいます
■□□□
□□□□
□□□□
□□□□
■=空きマス
プログラミング初心者です。javascriptの練習にと思い、↑のような16面のパズルを作りました。(正式名称はよくわかりません。マスをずらして絵柄を完成させるアレです)
パズルを始める際にマスの並びをシャッフルする、まではできたのですが、一つ問題があり、シャッフルされたマスの並びで絶対に解けないパターンが発生してしまいます。
16面のパズルの解けないパターンというのは、↓の状態から(2)と(1)を入れ替える事が不可能、というものです。
■(2)(1)(3)
(4)(5)(6)(7)
(8)(9)(10)(11)
(12)(13)(14)(15)
現段階でのシャッフルの方法は、単純に、マス(画像)が正しい順番で並んでいる状態を
シャッフル前 ⇒ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
とし、これをシャッフルして
シャッフル後 ⇒ 14,8,1,7,12,9,3,5,15,2,10,6,4,11,13
のようにランダムな並び順となった配列を作り、それを元に画像を並べていく、というものです。
このシャッフル後の配列をチェックして解けないパターンであればエラーとしたいのですが、どのようなチェックをすれば良いのかがわかりません。数学のカテゴリに質問すべきかとも思いましたが、もしどなたかわかる方いらっしゃいましたら教えて頂けると幸いです。
お礼
どうも有難う御座います。 無事クリア出来ました。