Contagem no Go

Contagem no Go

Médio

Instruções

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.

Formato de entrada

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 vazia
  • B uma casa pertencente ao jogador das pretas
  • W uma casa pertencente ao jogador das brancas

Formatos de saída

Espera-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: [],
}
Editar via GitHub O link abre em uma nova janela ou aba
JavaScript Exercism

Tudo pronto para começar Contagem no Go?

Crie sua conta no Exercism para aprender e dominar JavaScript com 37 conceitos159 exercícios e mentoria humana de verdade, tudo de graça.