数一数围棋棋盘上的得分点。
在围棋(又称 baduk、igo、cờ vây 和 wéiqí)中,用你的棋子把空的交叉点完全围住就能得分。被一名玩家围住的交叉点称为他的地盘。
计算每名玩家的地盘。可以假设,任何被困在对方地盘里的棋子都已经从棋盘上拿掉了。
确定包含指定坐标的那块地盘。
一次可以围住多个空的交叉点,而且判断是否围住时,只有横向和纵向相邻的交叉点才算数。下图中,起作用的棋子标为“O”,不起作用的棋子标为“I”(忽略不计)。空白处表示空的交叉点。
+----+
|IOOI|
|O O|
|O OI|
|IOI |
+----+
更准确地说,如果一个空的交叉点的所有相邻点要么是该玩家的棋子,要么是属于该玩家地盘的空的交叉点,那么这个交叉点就属于该玩家的地盘。
想了解更多,可以查看 维基百科 或 Sensei's Library。
board形参代表棋盘,格式为字符串数组。
[' B ', ' B B ', 'B W B', ' W W ', ' W '];
字符串中的每个字符代表一个格子。 格子的有效取值有:
代表空格子的空白字符B 黑方拥有的格子W 白方拥有的格子getTerritory函数应返回一个包含 2 个属性的对象:
owner:领地的所有者(NONE、BLACK 或 WHITE)territory:由坐标组成的数组,表示领地中的每个格子。{
owner: 'BLACK',
territory: [
[0, 0],
[0, 1],
[1, 0],
],
}
getTerritories函数应返回一个包含 3 个属性的对象:
territoryBlack:由坐标组成的数组,表示 BLACK 方拥有的领地territoryWhite:由坐标组成的数组,表示 WHITE 方拥有的领地territoryNone:由坐标组成的数组,表示双方玩家都不拥有的领地{
territoryBlack: [
[0, 0],
[0, 1],
],
territoryWhite: [
[3, 0],
[3, 1],
],
territoryNone: [],
}