javascript - 路径生成算法混淆

标签 javascript algorithm

我在创建路径生成算法方面寻求帮助 here , Taekahn 非常亲切地帮助了我。除了IsNotMarked 函数这一节外,我理解他的所有代码。

FIDDLE

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() 应该检查与 those 节点相邻的节点(东节点以东的节点)以检查它们是否未标记(路径的一部分) ,因为要保持单一路径,一个节点只能有一个邻居。

问题:

1) 我尝试替换

return matrix[row][column].data('partOfPath') != true;

if (matrix[row][column].data('partOfPath') == false) return true;

我认为这意味着同样的事情,但它只标记根节点并且不起作用。这两个有什么不同?如果该节点不是路径的一部分,则返回 IsNotMarked 为真,这不是真的吗?

2) 我还尝试通过简单地检查节点是否是直接在 AddToFrontier() 中的路径的一部分来完全删除 IsNotMarked() 来简化它,但现在什么都没有完全绘制:

    if (row - 1 >= 0 && matrix[row-1][column].data('partOfPath') == true) { //check if it IS marked... 
        markedNeighbors++;
    }

任何帮助都会很棒!


enter image description here

最佳答案

matrix[row][column].data('partOfPath') 既不是 true 也不是 false(例如 nullundefined).

在这种情况下,以下语句返回 true:

return matrix[row][column].data('partOfPath') != true;

但以下返回 false(请注意您还需要 else 语句):

if (matrix[row][column].data('partOfPath') == false)
    return true;
else
    return false;

关于javascript - 路径生成算法混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27809844/

相关文章:

python - 找到最少的删除次数以获得每个字母的唯一计数

javascript - 最新版本的 Firefox 没有 svgElm.offsetHeight 属性

performance - 做 HTTP 基准测试后如何计算平均情况

javascript - 使用 Java 在样式表中展开全部或全部折叠

javascript - 仅在网络应用程序上强制使用一个选项卡(例如类似于 WhatsApp 和 Google Messenger)

algorithm - 有没有时间复杂度为O(n*(log n)^2)的算法?

c - 在文本中搜索字符 block (单词)

c++ - 从整数范围内搜索

javascript - 通过字符串访问 JavaScript 中的事件数据以指定要捕获的输入表单

javascript - 什么是|| {} 在 JavaScript 中意味着什么?