Conteo de Go

Conteo de Go

Intermedia

Instrucciones

Cuenta los puntos anotados en un tablero de Go.

En el juego de go (también conocido como baduk, igo, cờ vây y wéiqí) se ganan puntos al rodear por completo intersecciones vacías con tus piedras. Las intersecciones rodeadas de un jugador se conocen como su territorio.

Calcula el territorio de cada jugador. Puedes suponer que las piedras que quedaron atrapadas en territorio enemigo ya se retiraron del tablero.

Determina el territorio que incluye una coordenada específica.

Se pueden rodear varias intersecciones vacías a la vez, y para rodear solo cuentan los vecinos horizontales y verticales. En el siguiente diagrama, las piedras que importan están marcadas con «O» y las que no, con «I» (ignoradas). Los espacios vacíos representan intersecciones vacías.

+----+
|IOOI|
|O  O|
|O OI|
|IOI |
+----+

Para ser más precisos, una intersección vacía forma parte del territorio de un jugador si todos sus vecinos son piedras de ese jugador o intersecciones vacías que forman parte del territorio de ese jugador.

Para más información, consulta Wikipedia o Sensei's Library.

Formato de entrada

El parámetro board, que representa el tablero de juego, está en el formato de un array de strings.

['  B  ', ' B B ', 'B W B', ' W W ', '  W  '];

Cada carácter de un string representa una celda. Los valores válidos para una celda son:

  • un espacio en blanco que corresponde a una celda vacía
  • B una celda que le pertenece al jugador negro
  • W una celda que le pertenece al jugador blanco

Formatos de salida

Se espera que la función getTerritory devuelva un objeto con 2 propiedades:

  • owner El propietario del territorio (NONE, BLACK o WHITE)
  • territory Un array de coordenadas que representa cada celda del territorio.
{
    owner: 'BLACK',
    territory: [
        [0, 0],
        [0, 1],
        [1, 0],
    ],
}

Se espera que la función getTerritories devuelva un objeto con 3 propiedades:

  • territoryBlack Un array de coordenadas que representa los territorios que le pertenecen al jugador BLACK
  • territoryWhite Un array de coordenadas que representa los territorios que le pertenecen al jugador WHITE
  • territoryNone Un array de coordenadas que representa los territorios que no le pertenecen a ninguno de los dos jugadores
{
    territoryBlack: [
        [0, 0],
        [0, 1],
    ],
    territoryWhite: [
        [3, 0],
        [3, 1],
    ],
    territoryNone: [],
}
Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
JavaScript Exercism

¿Todo listo para empezar Conteo de Go?

Regístrate en Exercism para aprender y dominar JavaScript con 37 conceptos159 ejercicios y mentoría humana real, todo gratis.