希望这不是一个没有背景的问题,但这里什么都没有。所以,我从某人那里继承了这段代码,而我似乎无法让它发挥作用!
我们正在制作Go游戏。我们想要扫描板上的一组件,看看它们是否是空的。空方块被称为“自由”。现在,在函数的底部,我们正在创建一个新的2D数组'visitedBoard',用于跟踪我们到目前为止扫描的位置。
问题,当前的实现允许自由扫描两次!当它是空的或其他颜色(0)时,它似乎只是在板上标记为“已访问”,而不是在它为1时。
BTW,在底部 - 我们正在遍历邻居,这是一个4项对象数组{row:2,col:3}然后通过这个函数递归运行它。任何帮助都有帮助。我是这个功能/不可变业务的新手。
const getLiberties = function (board, point, color) {
if (board.get(point.row).get(point.col) === C.VISITED) {
return 0; // we already counted this point
} else if (board.get(point.row).get(point.col) === C.EMPTY) {
return 1; // point is a liberty
} else if (board.get(point.row).get(point.col) !== color) {
return 0; // point has an opposing stone in it
}
const neighbours = getNeighbours(board, point)
const visitedBoard = board.setIn([point.row, point.col], C.VISITED)
return neighbours.reduce(
(liberties, neighbour) => liberties + getLiberties(visitedBoard,
neighbour, color), 0)}