私は単純な数独ソルバーを書いています。これは、1 ~ 9 の数字の配列を取り、そのセルで不可能な場合は null に設定します。例として、答えが 5 しかないセルがあるため、5 以外のすべての数字が null に設定されます。次に、null であるすべての値を配列から削除する clean() 関数がありますが、正しく機能していません。元の配列はこれです。
[null,null,null,null,5,null,null,null,null]
掃除したら元に戻る
[null,null,5,null,null]
JavaScript コードはこちら、グリッドは数独の数字のグリッドです
function mainmethod(){
var onepos=oneposs();
}
function oneposs(){
var possibs=new Array(1,2,3,4,5,6,7,8,9);
for (var ycount=0;ycount<=8;ycount++){
var value=grid[0][ycount];
var index=possibs.indexOf(value);
possibs[index]=null;
}
// for(var xcount=0;xcount<=8;xcount++){
// var value=grid[xcount][0];
// var index=possibs.indexOf(value);
// possibs.splice(index,1);
// }
possibs=clean(possibs);
alert(JSON.stringify(possibs));
}
function clean(array){
for(var i=0;i<=8;i++){
if(array[i]===null){
array.splice(i,1);
}
}
return array;
}
基本的に、array.splice は必要なすべてをスプライシングしていません。その理由はわかりません。