Conta os pontos marcados num tabuleiro de Go.
No jogo de Go (também conhecido como baduk, igo, cờ vây e wéiqí), ganham-se pontos ao rodear completamente interseções vazias com as tuas pedras. As interseções rodeadas de um jogador são conhecidas como o seu território.
Calcula o território de cada jogador. Podes assumir que quaisquer pedras que tenham ficado presas em território inimigo já foram retiradas do tabuleiro.
Determina o território que inclui uma coordenada especificada.
É possível rodear várias interseções vazias ao mesmo tempo e, para rodear, só contam os vizinhos horizontais e verticais. No diagrama seguinte, as pedras que importam estão marcadas com "O" e as que não importam estão marcadas com "I" (ignoradas). Os espaços vazios representam interseções vazias.
+----+
|IOOI|
|O O|
|O OI|
|IOI |
+----+
Para ser mais preciso, uma interseção vazia faz parte do território de um jogador se todos os seus vizinhos forem pedras desse jogador ou interseções vazias que fazem parte do território desse jogador.
Para mais informações, consulta a Wikipedia ou a Sensei's Library.
O parâmetro board, que representa o tabuleiro de jogo, está no formato de um array de strings.
[' B ', ' B B ', 'B W B', ' W W ', ' W '];
Cada caráter de uma string representa uma célula. Os valores válidos para uma célula são:
um espaço em branco que corresponde a uma célula vaziaB uma célula que pertence ao jogador pretoW uma célula que pertence ao jogador brancoA função getTerritory deve devolver um objeto com 2 propriedades:
owner O dono do território (NONE, BLACK ou WHITE)territory Um array de coordenadas que representa cada célula do território.{
owner: 'BLACK',
territory: [
[0, 0],
[0, 1],
[1, 0],
],
}
A função getTerritories deve devolver um objeto com 3 propriedades:
territoryBlack Um array de coordenadas que representa os territórios que pertencem ao jogador BLACK
territoryWhite Um array de coordenadas que representa os territórios que pertencem ao jogador WHITE
territoryNone Um array de coordenadas que representa os territórios que não pertencem a nenhum dos dois jogadores{
territoryBlack: [
[0, 0],
[0, 1],
],
territoryWhite: [
[3, 0],
[3, 1],
],
territoryNone: [],
}
Inscreve-te no Exercism para aprenderes e dominares JavaScript com 37 conceitos159 exercícios, e mentoria humana real, tudo grátis.