Minesweeper es un juego muy popular en el que hay que encontrar las minas usando pistas numéricas que indican cuántas minas hay directamente adyacentes (en horizontal, en vertical o en diagonal) a una casilla.
Tu tarea es añadir el número de minas a las casillas vacías de un tablero de Buscaminas ya completado. El tablero en sí es un rectángulo compuesto por casillas que están vacías (' ') o que contienen una mina ('*').
Para cada casilla vacía, cuenta cuántas minas tiene adyacentes (en horizontal, en vertical y en diagonal). Si la casilla vacía no tiene minas adyacentes, déjala vacía. En caso contrario, sustitúyela por el número de minas 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 debería transformar en esto:
1*3*1
13*31
·2*2·
·111·
Las ubicaciones x,y a menudo se representan como un Point, lo que da lugar a algunas funciones de puntos útiles que pueden ayudarte con esto. Como alternativa, representar esto como un array 2D también puede resultar útil. En cualquier caso, definir algunos métodos de extensión descriptivos que pueden hacer tu solución mucho más legible y elegante.
Regístrate en Exercism para aprender y dominar Pharo con 50 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.