4x4 の特定の数独の自動解決策をコーディングする必要があるという問題があります。これは、数字が 1 2 3 4 までしか進まないことを意味します。私はまだプログラミングに慣れていないので、これは数独の単純化されたバージョンです。
そこからランダムな数独が生成された特定のテンプレートがあり、数独を自動的に解決するコードを作成する必要があります。
これが私が解決しなければならない数独として最初に持っているものです
sudoku[6] = [[" ","2"," "," "],
[" "," ","2"," "],
[" "," "," ","3"],
["4"," "," "," "]
私の考えは、「1234」を空の「」に挿入し、列、行、および象限に数字の1つが既に存在する場合、「1234」から数字を削除することでした。だから私がやりたかったのは、ループを使用してテーブル内のすべての位置を通過し、たとえば「1」だけを見つけた瞬間に、「1234」から 1 を削除することです。
これが私のコードの始まりです。ifに到達した瞬間に機能しないようです。何が間違っているのか、またはIfに到達したときになぜ機能しないのか教えてください。前もって感謝します。
var sudoku = sudoku[6];
// function to put "1234" into empty space ""
var concatenate = function (s)
{
for (i=0; i<s.length; i++)
for (j=0; j<s.length; j++)
if (sudoku[i][j] === " ")
sudoku[i][j] = "1234";
};
concatenate(sudoku);
// function to solve the sudoku automatically.
var solve = function (t)
{
for (i = 0; i<t.length; i++)
for (j=0; j<t.length; j++)
for (k=j; k<(4+j); k++)
if (sudoku[i][j].length === 1) // this is where it seems to bug, in this if im trying to find the position where we only have one number and not "1234"
var s = sudoku[i][j];
if (sudoku[i][k-j] !== ("1" || "2" || "3" || "4")) // here im finding the position of all position in the sudoku where ive got "1234" so i can remove the number found in the previous if.
{
var index = sudoku[i][k-j].indexOf(s);
var string_new = sudoku[i][k-j].substring(0,index) + sudoku[i][k-j].substring(index+1, 4);
sudoku[i][k-j] = string_new;
}
};