路径生成算法混淆
Path generation algorithm confusion
我在创建路径生成算法时寻求帮助 here,Taekahn 非常慷慨地帮助了我。我理解他的所有代码,除了 IsNotMarked
函数这一部分。
function IsNotMarked(row, column) {
//if row is out of bounds, it is not marked
if (row < 0 || row >= matrix.length) return true;
//if column is out of bounds, it is not marked
if (column < 0 || column >= matrix[row].length) return true;
//if ahead node (east of East Node) is not part of path... it's not marked
return matrix[row][column].data('partOfPath') != true;
}
即:return matrix[row][column].data('partOfPath') != true;
IsNotMarked()
、CreateNewFrontier()
上面的函数应该检查每个方向(北、东、南、西)的相邻节点,首先检查它们是否在边界内...
然后AddToFrontier()
应该检查相邻那些节点的节点(东节点以东的节点)以检查它们是否未标记(路径的一部分) ,因为要保持单一路径,一个节点只能有一个邻居。
问题:
1) 我尝试替换
return matrix[row][column].data('partOfPath') != true;
和
if (matrix[row][column].data('partOfPath') == false) return true;
我觉得意思是一样的,但是它只标记了根节点并且不起作用。这两个有什么不同?是不是真的,如果那个节点不是路径的一部分,那么 return IsNotMarked
是真的吗?
2) 我还尝试通过简单地检查节点是否是直接在 AddToFrontier()
中的路径的一部分来完全删除 IsNotMarked()
来简化它,但现在什么都没有绘制:
if (row - 1 >= 0 && matrix[row-1][column].data('partOfPath') == true) { //check if it IS marked...
markedNeighbors++;
}
任何帮助都会很棒!
当 matrix[row][column].data('partOfPath')
既非真亦非假(例如 null
或 undefined
)时,就会出现差异。
在这种情况下,下面的语句returns true
:
return matrix[row][column].data('partOfPath') != true;
但下面的 returns 错误(注意你还需要 else 语句):
if (matrix[row][column].data('partOfPath') == false)
return true;
else
return false;
我在创建路径生成算法时寻求帮助 here,Taekahn 非常慷慨地帮助了我。我理解他的所有代码,除了 IsNotMarked
函数这一部分。
function IsNotMarked(row, column) {
//if row is out of bounds, it is not marked
if (row < 0 || row >= matrix.length) return true;
//if column is out of bounds, it is not marked
if (column < 0 || column >= matrix[row].length) return true;
//if ahead node (east of East Node) is not part of path... it's not marked
return matrix[row][column].data('partOfPath') != true;
}
即:return matrix[row][column].data('partOfPath') != true;
IsNotMarked()
、CreateNewFrontier()
上面的函数应该检查每个方向(北、东、南、西)的相邻节点,首先检查它们是否在边界内...
然后AddToFrontier()
应该检查相邻那些节点的节点(东节点以东的节点)以检查它们是否未标记(路径的一部分) ,因为要保持单一路径,一个节点只能有一个邻居。
问题:
1) 我尝试替换
return matrix[row][column].data('partOfPath') != true;
和
if (matrix[row][column].data('partOfPath') == false) return true;
我觉得意思是一样的,但是它只标记了根节点并且不起作用。这两个有什么不同?是不是真的,如果那个节点不是路径的一部分,那么 return IsNotMarked
是真的吗?
2) 我还尝试通过简单地检查节点是否是直接在 AddToFrontier()
中的路径的一部分来完全删除 IsNotMarked()
来简化它,但现在什么都没有绘制:
if (row - 1 >= 0 && matrix[row-1][column].data('partOfPath') == true) { //check if it IS marked...
markedNeighbors++;
}
任何帮助都会很棒!
当 matrix[row][column].data('partOfPath')
既非真亦非假(例如 null
或 undefined
)时,就会出现差异。
在这种情况下,下面的语句returns true
:
return matrix[row][column].data('partOfPath') != true;
但下面的 returns 错误(注意你还需要 else 语句):
if (matrix[row][column].data('partOfPath') == false)
return true;
else
return false;