2016-08-31 8 views
0

を使用して数独ボードテーブルを生成します。ダイナミック私はこのスクリプトを使用して数独ボードを生成するためにしようとしていますJavaScriptの

function generate(count, values) { 
return Array.apply(null, { length: count }).map(function() { 
    var r = [], 
     array = values.slice(); 
    while (array.length) { 
     r.push(array.splice(Math.floor(Math.random() * array.length), 1)[0]); 
    } 
    return r; 
}); 
}; 

var myStringArray = generate(9, [1, 2, 3, 4, 5, 6, 7, 8, 9]); 

Array.from(document.getElementsByClassName('cell')).forEach(function(e, i){ 
    var y = Math.floor(i/myStringArray.length); 
    var x = i % myStringArray.length; 
    e.textContent = myStringArray[y][x]; 

}); 

問題は、私がコラムや広場に固有の番号を生成するために検証する方法がわからないということです実際には、行だけに固有の数値を検証して生成しています。

fiddle:

答えて

1

すぐにすべてのルールに違反していない数独ボードに番号を追加することが可能であるので、あなたは、バックトラックが必要になりますが、これは後で矛盾につながります。独自の数独問題を抱えて任意の数字を任意の場所に置くと、これだけの経験ができます。

Dancing Linksアルゴリズムを調べることをおすすめします。あなたは簡単に数独カバー問題として定式化することができ、そのアルゴリズムは存在する場合、解を見つけることができます。完全に空のボードの場合は、解決策が必要です。ランダムな結果を取得する場合は、行列をランダム化します。

また、最初にこのようなボードを作成しようとしているわけではないので、all the other sudoku-tagged questionsを調べて、ある言語から別の言語に翻訳してもそれほどゲームはあまり変わりません。

関連する問題