Conte os pontos pontuados em um tabuleiro de go.
No jogo de go (também conhecido como baduk, igo, cờ vây e wéiqí), ganham-se pontos ao cercar completamente interseções vazias com suas pedras. As interseções cercadas de um jogador são conhecidas como seu território.
Calcule o território de cada jogador. Você pode assumir que quaisquer pedras que tenham ficado presas em território inimigo já foram retiradas do tabuleiro.
Determine o território que inclui uma coordenada especificada.
Várias interseções vazias podem ser cercadas de uma só vez e, para cercar, contam apenas os vizinhos horizontais e verticais. No diagrama a seguir, as pedras que importam estão marcadas com "O" e as que não importam estão marcadas com "I" (ignoradas). 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, veja a Wikipedia ou a Sensei's Library.
O parâmetro board, que representa o tabuleiro, está no formato de um array de strings.
[' B ', ' B B ', 'B W B', ' W W ', ' W '];
Cada caractere de uma string representa uma casa. Os valores válidos para uma casa são:
um espaço em branco correspondente a uma casa vaziaB uma casa pertencente ao jogador das pretasW uma casa pertencente ao jogador das brancasEspera-se que a função getTerritory retorne um objeto com 2 propriedades:
owner O dono do território (NONE, BLACK ou WHITE)territory Um array de coordenadas que representa cada casa do território.{
owner: 'BLACK',
territory: [
[0, 0],
[0, 1],
[1, 0],
],
}
Espera-se que a função getTerritories retorne um objeto com 3 propriedades:
territoryBlack Um array de coordenadas que representa os territórios do jogador BLACK
territoryWhite Um array de coordenadas que representa os territórios do 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: [],
}
Crie sua conta no Exercism para aprender e dominar JavaScript com 37 conceitos159 exercícios e mentoria humana de verdade, tudo de graça.