Zähle die gewerteten Punkte auf einem Go-Brett.
Im Spiel Go (auch bekannt als Baduk, Igo, cờ vây und Wéiqí) gewinnst du Punkte, indem du leere Schnittpunkte vollständig mit deinen Steinen umschließt. Die umschlossenen Schnittpunkte eines Spielers werden als sein Territorium bezeichnet.
Berechne das Territorium jedes Spielers. Du kannst davon ausgehen, dass alle Steine, die im feindlichen Territorium gestrandet sind, bereits vom Brett genommen wurden.
Bestimme das Territorium, das eine angegebene Koordinate enthält.
Es können mehrere leere Schnittpunkte gleichzeitig umschlossen sein, und für das Umschließen zählen nur horizontale und vertikale Nachbarn. Im folgenden Diagramm sind die Steine, die zählen, mit „O“ markiert und die Steine, die nicht zählen, mit „I“ (ignoriert). Leere Stellen stehen für leere Schnittpunkte.
+----+
|IOOI|
|O O|
|O OI|
|IOI |
+----+
Genauer gesagt gehört ein leerer Schnittpunkt zum Territorium eines Spielers, wenn alle seine Nachbarn entweder Steine dieses Spielers oder leere Schnittpunkte sind, die zum Territorium dieses Spielers gehören.
Weitere Informationen findest du bei Wikipedia oder in Sensei's Library.
Der Parameter board, der das Spielbrett darstellt, hat das Format eines Arrays aus Strings.
[' B ', ' B B ', 'B W B', ' W W ', ' W '];
Jedes Zeichen eines Strings steht für eine Zelle. Die gültigen Werte für eine Zelle sind:
ein Leerzeichen für eine leere ZelleB eine Zelle, die dem schwarzen Spieler gehörtW eine Zelle, die dem weißen Spieler gehörtDie Funktion getTerritory soll ein Objekt mit 2 Eigenschaften zurückgeben:
owner Der Besitzer des Gebiets (NONE, BLACK oder WHITE)territory Ein Array von Koordinaten, die jede Zelle im Gebiet repräsentieren.{
owner: 'BLACK',
territory: [
[0, 0],
[0, 1],
[1, 0],
],
}
Die Funktion getTerritories soll ein Objekt mit 3 Eigenschaften zurückgeben:
territoryBlack Ein Array von Koordinaten, die die Gebiete repräsentieren, die dem Spieler BLACK gehörenterritoryWhite Ein Array von Koordinaten, die die Gebiete repräsentieren, die dem Spieler WHITE gehörenterritoryNone Ein Array von Koordinaten, die die Gebiete repräsentieren, die keinem der beiden Spieler gehören{
territoryBlack: [
[0, 0],
[0, 1],
],
territoryWhite: [
[3, 0],
[3, 1],
],
territoryNone: [],
}
Melde dich bei Exercism an, um JavaScript mit 37 Konzepte159 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.