javascript - 未能在两者之间移动元素?
问题描述
我一直在尝试使用 Blacktracking 算法解决数独问题,一切都很好,调用了 canvar,我可以看到数字但事情是数字没有移动,即逻辑不执行
current.i === 0;
是我得到错误的地方!即使我已经为 num 声明了一个单独的变量,问题也没有得到解决。只有当我删除 .numcurrent == 0
而不是它没有显示任何错误但数字仍然没有移动时
var cell = [];
var stack = [];
var sudoku = [2,3,0,9,4,0,6,7,0,
8,0,0,3,2,5,9,1,4,
9,0,0,7,6,0,3,2,0,
1,0,0,0,0,0,7,9,2,
5,0,3,2,1,0,4,8,6,
4,0,0,6,8,0,5,3,1,
7,0,0,1,0,0,0,0,9,
6,5,9,8,7,2,1,4,3,
3,0,0,0,9,0,0,0,7];
var current;
var number = 1;
function setup(){
createCanvas(450,450);
var a=0;
var b=0;
for(var i=0;i<81;i++){
if(a%9==0 && i!=0){
b = b+50;
a = 0;
}
each[i] = new each(a,b,i,sudoku[i]);
a = a+50;
}
current = cell[0];
}
function draw(){
background(10);
for(var i=0;i<81;i++){
each[i].show();
}
if(current.num === 0){ //the error is typeerror can't read the property of num
if(! sameColumn(current.i,number) && ! sameRow(current.i,number) && ! sameSquare(current.i,number) && number<(10)){
current.num = number;
stack.push(current);
number = 0;
current.each[current.i+1];
}
else {
if(number > 8){
current.num = 0;
current = stack.pop();
number = current.num;
current.num = 0;
}
}
}
else{
current = each[current+1];
number = 0;
}
number++;
}
function each(a,b,i,num){
this.a = a;
this.b = b;
this.i = i;
this.num = num;
this.show = function(){
noFill();
stroke(255);
rect(this.a,this.b,50,50);
textSize(32);
text(this.num,a+12,b+40);
}
}
解决方案
错误非常简单。current = cell[0];
变得未定义,因为您定义cell
为一个空数组并且之后没有对其进行操作。
从我到目前为止观察到的情况来看,您的代码的许多部分在逻辑上都不起作用,例如,
same Column(current.i,number) && ! sameRow(current.i,number) && ! sameSquare(current.i,number)
除非你有一个包含这些函数的单独的 js 文件,否则它被执行肯定会抛出一个错误(不是因为执行没有到达该行)。
另一个是
current = cell[current+1];
如果current
变量是用来存储单元格对象的,加1是没有意义的,反之亦然。
现在我相信这就是设置功能的样子:
function setup(){
createCanvas(450,450);
var a=0;
var b=0;
for(var i=0;i<81;i++){
if(a%9==0 && i!=0){
b = b+50;
a = 0;
}
cell[i] = new Cell(a,b,i,sudoku[i]); //changed each[i] to cell[i], also renamed the 'each' class
a = a+50;
}
current = cell[0];
}
如果可能的话,请编辑更多关于您的代码究竟做了什么的信息。干杯:)
推荐阅读
- python - 当我的列标题名称中包含 \ 时,如何将数据框拆分为多个列?
- python - 为什么 beautifulsoup4 的 find_all() 函数不能全部抓取
- optimization - Common Lisp - Consing 优化问题 - 循环和 &rest 参数
- excel - 根据设备的维护频率和标准分配日期
- r - 从函数内部处理数据的问题
- python-3.x - String.casefold 无法正常工作
- c++ - 函数中的 C++ 函数参数
- python - 文件 xlsb:[Errno 2] 没有这样的文件或目录:
- javascript - 多个 API 调用的问题
- java - 这种方法的时间复杂度(大 O)