Track
/
JavaScript
JavaScript
/
Esercizi
/
Conteggio del Go
Conteggio del Go

Conteggio del Go

Medio

Istruzioni

Conta i punti segnati su un tavoliere da Go.

Nel gioco del go (noto anche come baduk, igo, cờ vây e wéiqí) si guadagnano punti circondando completamente le intersezioni vuote con le proprie pietre. Le intersezioni circondate di un giocatore sono note come suo territorio.

Calcola il territorio di ciascun giocatore. Puoi dare per scontato che tutte le pietre rimaste bloccate in territorio nemico siano già state rimosse dal tavoliere.

Determina il territorio che include una coordinata specificata.

Più intersezioni vuote possono essere circondate contemporaneamente. Per circondare contano solo i vicini orizzontali e verticali. Nel diagramma seguente le pietre che contano sono contrassegnate con «O» e quelle che non contano con «I» (ignorate). Gli spazi vuoti rappresentano intersezioni vuote.

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

Per essere più precisi, un'intersezione vuota fa parte del territorio di un giocatore se tutti i suoi vicini sono pietre di quel giocatore oppure intersezioni vuote che fanno parte del territorio di quel giocatore.

Per maggiori informazioni vedi Wikipedia o Sensei's Library.

Formato dell'input

Il parametro board, che rappresenta il tabellone di gioco, ha il formato di un array di stringhe.

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

Ogni carattere di una stringa rappresenta una cella. I valori validi per una cella sono:

  • uno spazio che corrisponde a una cella vuota
  • B una cella di proprietà del giocatore nero
  • W una cella di proprietà del giocatore bianco

Formati dell'output

Ci si aspetta che la funzione getTerritory restituisca un oggetto con 2 proprietà:

  • owner Il proprietario del territorio (NONE, BLACK o WHITE)
  • territory Un array di coordinate che rappresenta ogni cella del territorio.
{
    owner: 'BLACK',
    territory: [
        [0, 0],
        [0, 1],
        [1, 0],
    ],
}

Ci si aspetta che la funzione getTerritories restituisca un oggetto con 3 proprietà:

  • territoryBlack Un array di coordinate che rappresenta i territori di proprietà del giocatore BLACK
  • territoryWhite Un array di coordinate che rappresenta i territori di proprietà del giocatore WHITE
  • territoryNone Un array di coordinate che rappresenta i territori che non appartengono a nessuno dei due giocatori
{
    territoryBlack: [
        [0, 0],
        [0, 1],
    ],
    territoryWhite: [
        [3, 0],
        [3, 1],
    ],
    territoryNone: [],
}
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
JavaScript Exercism

Vuoi iniziare Conteggio del Go?

Iscriviti a Exercism per imparare e padroneggiare JavaScript con 37 concetti159 esercizi e il mentoring di persone reali, tutto gratis.