計算圍棋棋盤上的得分。
在圍棋(也稱 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: [],
}