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

Compte les points au Go

Difficile

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.

Indices

Pour terminer cet exercice, tu dois implémenter les fonctions suivantes :

  • territories renvoie les coordonnées (en base 1, la case en haut à gauche étant (1,1)) des points de chaque territoire, ainsi que celui qui « possède » le territoire.

  • territoriesFor renvoie le territoire qui contient la coordonnée, ainsi que le propriétaire de ce territoire. Si la coordonnée ne pointe pas vers un emplacement vide, renvoie Nothing.

Un territoire appartient à l'un des joueurs si les pierres de ce joueur sont les seules pierres adjacentes au territoire.

Tu trouveras les signatures de type déjà en place, mais c'est à toi de définir les fonctions.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Haskell Exercism

Prêt à commencer Compte les points au Go ?

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