Tracks
/
Rust
Rust
/
Ejercicios
/
Buscaminas
Buscaminas

Buscaminas

Intermedia

Introducción

Minesweeper es un juego popular en el que el jugador tiene 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.

Instrucciones

Tu tarea es agregar el número de minas a los cuadros vacíos de un tablero de Buscaminas ya resuelto. El tablero es un rectángulo compuesto por cuadros que están vacíos (' ') o que contienen una mina ('*').

Para cada cuadro vacío, cuenta cuántas minas tiene adyacentes (en horizontal, en vertical y en diagonal). Si el cuadro vacío no tiene minas adyacentes, déjalo vacío. De lo contrario, reemplázalo por la cantidad de minas adyacentes.

Por ejemplo, puedes recibir un tablero de 5 x 4 como este (los espacios vacíos se representan aquí con el carácter «·» para mostrarlos en pantalla):

·*·*·
··*··
··*··
·····

Y tu código debe transformarlo en este:

1*3*1
13*31
·2*2·
·111·

Sugerencia de rendimiento

Todos los argumentos y valores devueltos están en ASCII. Rust Strings y &str son utf8, así que, aunque uno podría esperar que "Hello".chars() sea sencillo, en realidad tiene que comprobar cada char para ver si mide 1, 2, 3 o 4 u8s de largo. Si sabemos que un &str es ASCII, entonces podemos llamar a .as_bytes() y referirnos a los datos subyacentes como un &[u8] (segmento de bytes). Iterar sobre un segmento de bytes ASCII es mucho más rápido, ya que no hay puntos de código involucrados: cada byte ASCII mide un u8.

¿Puedes completar el reto sin clonar el argumento?

Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
Rust Exercism

¿Todo listo para empezar Buscaminas?

Regístrate en Exercism para aprender y dominar Rust con 99 ejercicios y mentoría humana real, todo gratis.

¡Profundiza en Buscaminas!

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.