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.
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 videB une case appartenant au joueur noirW une case appartenant au joueur blancLa 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: [],
}
Inscris-toi sur Exercism pour apprendre et maîtriser JavaScript avec 37 concepts159 exercices, et un vrai mentorat humain, le tout gratuitement.