我对编程比较陌生,而且我对 javascript/html/css 不熟悉(阅读了一些教程)并且我的第一个脚本遇到了一个奇怪的问题。(尝试制作数独求解器)数组拼图包含:“3.542.81.4879.15.6.29.5637485.793.416132.8957.74.6528.2413.9.655.867.192.965124.8”其中拼图[0] = 3拼图[1] =。等等。谜题代表一个未解决的数独谜题,其中数字 1-9 代表解决了单元格和 . 未溶解的细胞。
下面是我的一个函数的代码,其中有 4 条警报消息。我的问题出在 MESSAGE 4 附近,其中puzzle[c+(9*r)] = nums[0];
显示puzzle[c+9*r]
仍包含 . 而不是 num[0] 的值(在第一种情况下为 6)。在函数之外声明:
var puzzle = new Array();
var options = new Array();
var nums = new Array();
var r = 0;
var c = 0;
var num=0;
函数 checkNumber 工作正常 *
消息 1:“puz conatians 。”
- 消息 2:“nums 长度为 1”
- 消息 3:“nums[0] 为 6”
- MESSAGE 4: = "谜题是。" 应该是“谜题是 6”
任何帮助将非常感激!如果我需要进一步澄清一些事情,请告诉我=]
function makeOptionsArray() {
// loop through 9x9 grid of sudoku r = row c = column
for (r = 0; r < 9; r++) {
for (c = 0; c < 9; c++) {
nums.length = 0; // reset array for each new cell
if (puzzle[c + (9 * r)] == '.') { // if unknown cell
alert("puz contains " + puzzle[c + 9 * r]); // MESSAGE 1
for (num = 1; num <= 9; num++) {
if (checkNumber(num, r, c)) { // check digits 1-9
nums.push(num); // keep track of possible values
//for this cell based on other known values on the board
}
}
options[c + (9 * r)] = nums; // used for another part & will contain all possible values for an unsolved cell
alert("nums length is " + nums.length); // MESSAGE 2
if (nums.length == 1) { // if only 1 possible number add to sudoku
alert("nums[0] is " + nums[0]); // MESSAGE 3
puzzle[c + (9 * r)] = nums[0];
document.getElementById(c + 9 * r).innerHTML = nums[0];
alert("puzzle is " + puzzle[c + 9 * r]); //MESSAGE 4
makeOptionsArray(); // call function again with updated puzzle (one less unknown cell)
}
if (nums.length == 0) { //if no possible options then no solutions for puzzle
alert("No solutions");
return true;
} else {
continue;
}
}
}
}
}