Tracks
/
Python
Python
/
Übungen
/
Go-Zählen
Go-Zählen

Go-Zählen

Mittel

Anleitung

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.

Ausnahmemeldungen

Manchmal ist es notwendig, eine Ausnahme auszulösen. Dabei solltest du immer eine aussagekräftige Fehlermeldung angeben, die zeigt, woher der Fehler kommt. Das macht deinen Code lesbarer und erleichtert das Debuggen erheblich. Wenn du weißt, dass die Fehlerquelle von einem bestimmten Typ ist, kannst du eine der eingebauten Fehlertypen auslösen, solltest aber trotzdem eine aussagekräftige Meldung angeben.

In dieser Übung musst du die raise-Anweisung verwenden, um bei ungültigen Koordinaten einen ValueError zu „werfen“. Die Tests bestehen nur, wenn du die exception sowohl mit raise auslöst als auch eine Meldung dazu mitgibst.

Um einen ValueError mit einer Meldung auszulösen, gib die Meldung als Argument für den exception-Typ an:

# when the coordinates for the piece are invalid
raise ValueError('Invalid coordinate')
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Python Exercism

Bereit, mit Go-Zählen zu starten?

Melde dich bei Exercism an, um Python mit 17 Konzepte146 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.