Flower Field es una reinterpretación compasiva del popular juego Buscaminas. El objetivo del juego es encontrar todas las flores del jardín con la ayuda de pistas numéricas que indican cuántas flores hay directamente adyacentes (en horizontal, en vertical o en diagonal) a una casilla. «Flower Field» se distribuyó en versiones regionales de Microsoft Windows en Italia, Alemania, Corea del Sur, Japón y Taiwán.
Tu tarea consiste en añadir el recuento de flores a las casillas vacías de un jardín de Campo de flores ya completado.
El jardín en sí es un tablero rectangular compuesto por casillas que o bien están vacías (' ') o bien contienen una flor ('*').
Para cada casilla vacía, cuenta el número de flores adyacentes (en horizontal, en vertical y en diagonal). Si la casilla vacía no tiene flores adyacentes, déjala vacía. En caso contrario, sustitúyela por el número de flores adyacentes.
Por ejemplo, puede que recibas un tablero de 5 x 4 como este (aquí los espacios vacíos se representan con el carácter '·' para que se vean en pantalla):
·*·*·
··*··
··*··
·····
Que tu código debe transformar en esto:
1*3*1
13*31
·2*2·
·111·
A veces es necesario lanzar una excepción. Cuando lo hagas, incluye siempre 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 mucho a la hora de depurar. En las situaciones en las que sabes que el origen del error va a ser de un tipo concreto, puedes optar por lanzar uno de los tipos de error integrados, pero aun así deberías incluir un mensaje significativo.
Este ejercicio en concreto requiere que uses la instrucción raise para «lanzar» un ValueError cuando la función board() reciba una entrada mal formada. Los tests solo pasarán si usas raise con 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 board receives malformed input
raise ValueError("The board is invalid with current input.")
Regístrate en Exercism para aprender y dominar Python con 17 conceptos146 ejercicios y mentoría humana real, todo gratis.
Exploramos bucles for anidados, un uso ingenioso de min/max para simplificar la comprobación de límites, canalizaciones funcionales y el uso de matrices bidimensionales.