Flower Field es una reinvención compasiva del popular juego Buscaminas. El objetivo del juego es encontrar todas las flores del jardín usando 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 es agregar el conteo 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 están vacías (' ') o tienen una flor ('*').
Para cada casilla vacía, cuenta cuántas flores tiene adyacentes (en horizontal, en vertical y en diagonal). Si la casilla vacía no tiene flores adyacentes, déjala vacía. De lo contrario, reemplázala por el conteo de flores adyacentes.
Por ejemplo, puedes recibir un tablero de 5 x 4 como este (aquí los espacios vacíos se representan con el carácter '·' para mostrarlos 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, 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 mucho con el debugging. Cuando sepas que el origen del error va a ser de un tipo determinado, puedes optar por lanzar uno de los tipos de error integrados, pero aun así debes incluir un mensaje significativo.
Este ejercicio en particular requiere que uses la sentencia raise para «lanzar» un ValueError cuando la función board() recibe datos mal formados. Las pruebas 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 un 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, el uso ingenioso de min/max para simplificar la verificación de límites, las canalizaciones funcionales y el uso de matrices bidimensionales.