0

私は単純な数独ソルバーを書いています。これは、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 は必要なすべてをスプライシングしていません。その理由はわかりません。

4

3 に答える 3

1

これを試して:

var array = [null,null,null,null,5,null,null,null,null];
for(var i=0;i<=array.length; ){
    if(array[i] === null){
        array.splice(i,1);
    } else if (array.length < 2) {
        break;
    } else {
        i++;
    }
}
于 2013-03-16T23:50:50.623 に答える