Parcours
/
JavaScript
JavaScript
/
Exercices
/
Compte les points au Go
Compte les points au Go

Compte les points au Go

Moyen

Instructions

Compte les points marqués sur un plateau de go.

Dans le jeu de go (aussi appelé baduk, igo, cờ vây et wéiqí), on gagne des points en encerclant complètement des intersections vides avec ses pierres. Les intersections encerclées d'un joueur constituent son territoire.

Calcule le territoire de chaque joueur. Tu peux supposer que toutes les pierres qui se sont retrouvées piégées dans le territoire ennemi ont déjà été retirées du plateau.

Détermine le territoire auquel appartient une coordonnée donnée.

Plusieurs intersections vides peuvent être encerclées en même temps, et pour l'encerclement, seuls les voisins horizontaux et verticaux comptent. Dans le diagramme suivant, les pierres qui comptent sont marquées « O » et celles qui ne comptent pas sont marquées « I » (ignorées). Les espaces vides représentent des intersections vides.

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

Pour être plus précis, une intersection vide fait partie du territoire d'un joueur si tous ses voisins sont soit des pierres de ce joueur, soit des intersections vides qui font partie du territoire de ce joueur.

Pour plus d'informations, voir Wikipédia ou Sensei's Library.

Format des entrées

Le paramètre board, qui représente le plateau de jeu, se présente sous la forme d'un tableau de strings.

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

Chaque caractère d'une string représente une case. Les valeurs valides pour une case sont :

  • un espace correspondant à une case vide
  • B une case appartenant au joueur noir
  • W une case appartenant au joueur blanc

Formats de sortie

La fonction getTerritory doit renvoyer un objet avec 2 propriétés :

  • owner Le propriétaire du territoire (NONE, BLACK ou WHITE)
  • territory Un tableau de coordonnées représentant chaque case du territoire.
{
    owner: 'BLACK',
    territory: [
        [0, 0],
        [0, 1],
        [1, 0],
    ],
}

La fonction getTerritories doit renvoyer un objet avec 3 propriétés :

  • territoryBlack Un tableau de coordonnées représentant les territoires appartenant au joueur BLACK
  • territoryWhite Un tableau de coordonnées représentant les territoires appartenant au joueur WHITE
  • territoryNone Un tableau de coordonnées représentant les territoires n'appartenant à aucun des deux joueurs
{
    territoryBlack: [
        [0, 0],
        [0, 1],
    ],
    territoryWhite: [
        [3, 0],
        [3, 1],
    ],
    territoryNone: [],
}
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
JavaScript Exercism

Prêt à commencer Compte les points au Go ?

Inscris-toi sur Exercism pour apprendre et maîtriser JavaScript avec 37 concepts159 exercices, et un vrai mentorat humain, le tout gratuitement.