8・15パズルのファイル詳細

8・15パズルのファイル詳細

8パズル1
8パズル1.html  8main.js 8パズル1.css
パネル設定 htmlに class="board" class="cell" data-number="0">1~9設定
シャッフル for(let i=0; i<10000; i++)


8パズル2
8パズル2.html js一体 8パズル1.css 
配列設定 id="panel" var arr = ['', '1', '2', '3', 一次元配列
shuffle i = Math.floor(Math.random() * n--); 1回のランダム


15パズル1
15パズル1.html  html css js 一体file
初期配列設定はない
シャッフル for(let i=0; i<10000; i++)

15パズル2
15パズル2.html 15main2.js 15パズル2.css
パネル設定 htmlに class="board" class="cell" data-number="0">1~9設定
シャッフル for(let i=0; i<10000; i++)


15パズル3
15パズル3.html js一体 15パズル2.css
配列設定 id="panel" arr = ['', '1', '2', '3', 一次元配列
shuffle i = Math.floor(Math.random() * n--); 1回のランダム


8・15パズル攻略1
8パズル1.html src="8パズル攻略.js" src="8pmove1.js"他 8パズル攻略.css
配列設定 id="table" arr = [[1, 5, 2],[6,8,3],[7,4,""]]2次元配列
シャッフル 
while (n) {
i = Math.floor(Math.random() * n);
j = Math.floor(Math.random() * m); // 列をランダムに選択
x = Math.floor(Math.random() * n);
y = Math.floor(Math.random() * m);
Move関数 セル指定
if ((targetRow == 0) && (targetCol == 1)
&& (emptyRow == 2) && (emptyCol == 2)){ // 空白セル:2,2 を上に移動
[arr[emptyRow][emptyCol], arr[emptyRow -1][emptyCol ]] // 2,2 ⇄ 1,2
= [arr[emptyRow -1][emptyCol ], arr[emptyRow][emptyCol]];
console.log("2,2 ⇄ 1,2");
} else
配列設定ができる 任意配列が可能
移動設定コードはセルごとに設定
パズル配列で解析不能が発生


8・15パズル攻略2
8パズル2.html 8パズル攻略2.js 8p2move1.js他 8パズル攻略2.css
初期配列設定はない
シャッフル for(let i=0; i<10000; i++)
Move関数 セル指定
if ((targetRow == 0) && (targetCol == 1)
&& (emptyRow == 2) && (emptyCol == 2)){ // 空白セル:2,2 を上に移動
[arr[emptyRow][emptyCol], arr[emptyRow -1][emptyCol ]] // 2,2 ⇄ 1,2
= [arr[emptyRow -1][emptyCol ], arr[emptyRow][emptyCol]];
console.log("2,2 ⇄ 1,2");
パネル配列の設定は起動時にランダム抽出で作成される
任意の設定が出来ない 解析確率が高い
パズル配列での解析不能を改善
  必ず攻略 完成する
シャッフル時のコードが違う


8・15パズル攻略3
8パズル攻略ver3.html 8パズル攻略ver3.js 8pmove1ver3.js他 8パズル攻略ver3.css
配列設定 id="table" arr = [[1, 5, 2],[6,8,3],[7,4,""]]2次元配列
シャッフル 
while (n) {
i = Math.floor(Math.random() * n);
j = Math.floor(Math.random() * m); // 列をランダムに選択
x = Math.floor(Math.random() * n);
y = Math.floor(Math.random() * m);
Move関数 セル位置判定
if ((emptyRow == targetRow) && (emptyCol < targetCol)){
[arr[emptyRow][emptyCol], arr[emptyRow ][emptyCol +1]]
= [arr[emptyRow ][emptyCol +1], arr[emptyRow][emptyCol]];
console.log ("1");
}else
8パズル攻略1のバージョンアップ版
8パズル攻略1を基本に
パズル攻略ファイルのセル移動方法を見直す
セル位置の大小判定により空白セルを移動させる方式
配列設定ができる 任意配列が可能


8・15パズル攻略4
8パズル攻略ver4.html 8パズル攻略ver4.js 8p2move1ver4.js他 8パズル攻略ver4.css
初期配列設定はない
シャッフル for(let i=0; i<10000; i++)
Move関数 セル位置判定
if ((emptyRow == targetRow) && (emptyCol < targetCol)){
[arr[emptyRow][emptyCol], arr[emptyRow ][emptyCol +1]]
= [arr[emptyRow ][emptyCol +1], arr[emptyRow][emptyCol]];
console.log ("1");
}else
8パズル攻略2のバージョンアップ版
8パズル攻略2を基本に パズル攻略ファイルのセル移動方法を見直す
セル位置の大小判定により空白セルを移動させる方式
パネル配列の設定は起動時にランダム抽出で作成される
任意の設定が出来ない 解析確率が高い パズル攻略3のコードを移植
移植コピー後のコード修正箇所
攻略js 及び move各ファイルの 配列名 arr を board に変更する
move()各ファイルの冒頭部分 if (board[i][j] === ””) {  を
if (board[i][j] === 0) {
に変更する
move1.js fileの 最終部分の makeTable を showBoard に変更する


8・15パズルW攻略Ver1
8パズルW攻略ver1.html js一体  8pmove1Wver1.js他 8パズルW攻略ver1.css
配列設定 id="table" arr = [[1, 5, 2],[6,8,3],[7,4,""]]2次元配列
シャッフル 縦横シャッフル
while (n) {
i = Math.floor(Math.random() * n);
j = Math.floor(Math.random() * m); // 列をランダムに選択
x = Math.floor(Math.random() * n);
y = Math.floor(Math.random() * m);
Move関数 セル位置判定
if ((emptyRow == targetRow) && (emptyCol < targetCol)) {
[arr[emptyRow][emptyCol], arr[emptyRow][emptyCol + 1]]
= [arr[emptyRow][emptyCol + 1], arr[emptyRow][emptyCol]];
console.log("1");
8パズル攻略1と3の合体版
配列設定ができる 任意配列が可能
パネルの数値クリックで空白セルを移動できる
移動実行ボタンクリックで空白セルを自動的に移動させることができる
セル位置の大小判定により空白セルを移動させる方式


8・15パズルW攻略Ver2
8パズルW攻略ver2.html js一体  8pmove1Wver2.js他 8パズルW攻略ver2.css
配列設定 id="table" arr = [[1, 5, 2],[6,8,3],[7,4,""]]2次元配列
シャッフル  for(let i=0; i<10000; i++)
Move関数 セル位置判定
if ((emptyRow == targetRow) && (emptyCol < targetCol)) {
[arr[emptyRow][emptyCol], arr[emptyRow][emptyCol + 1]]
= [arr[emptyRow][emptyCol + 1], arr[emptyRow][emptyCol]];
console.log("1");
パズル攻略1と3の合体版
配列設定ができる 任意配列が可能
パネルの数値クリックで空白セルを移動できる
移動実行ボタンクリックで空白セルを自動的に移動させることができる
セル位置の大小判定により空白セルを移動させる方式