Cuenta los puntos anotados en un tablero de Go.
En el juego del Go (también conocido como baduk, igo, cờ vây y wéiqí) se ganan puntos al rodear por completo intersecciones vacías con tus piedras. Las intersecciones rodeadas de un jugador se conocen como su territorio.
Calcula el territorio de cada jugador. Puedes suponer que las piedras que hayan quedado atrapadas en territorio enemigo ya se han retirado del tablero.
Determina el territorio que incluye una coordenada especificada.
Se pueden rodear varias intersecciones vacías a la vez y, para rodear, solo cuentan los vecinos horizontales y verticales. En el siguiente diagrama, las piedras que importan están marcadas con «O» y las que no, con «I» (ignoradas). Los espacios vacíos representan intersecciones vacías.
+----+
|IOOI|
|O O|
|O OI|
|IOI |
+----+
Para ser más precisos, una intersección vacía forma parte del territorio de un jugador si todos sus vecinos son piedras de ese jugador o intersecciones vacías que forman parte del territorio de ese jugador.
Para más información, consulta Wikipedia o Sensei's Library.
A veces es necesario lanzar una excepción. Cuando lo hagas, siempre debes incluir un mensaje de error significativo que indique cuál es el origen del error. Esto hace que tu código sea más legible y ayuda muchísimo a la hora de depurar. En situaciones en las que sabes que el origen del error será de un tipo concreto, puedes lanzar uno de los tipos de error integrados, pero aun así debes incluir un mensaje significativo.
Este ejercicio en concreto requiere que uses la instrucción raise para «lanzar» un ValueError cuando las coordenadas no sean válidas. Las pruebas solo pasarán si usas raise sobre la exception y además incluyes un mensaje con ella.
Para lanzar un ValueError con un mensaje, escribe el mensaje como argumento del tipo exception:
# when the coordinates for the piece are invalid
raise ValueError('Invalid coordinate')
Regístrate en Exercism para aprender y dominar Python con 17 conceptos146 ejercicios y mentoría humana real, todo gratis.