Rutas
/
Rust
Rust
/
Ejercicios
/
Buscaminas
Buscaminas

Buscaminas

Media

Introducción

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.

Instrucciones

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·

Sugerencia de rendimiento

Todas las entradas y salidas están en ASCII. Los Strings y los &str de Rust son UTF-8, así que, aunque se podría esperar que "Hello".chars() sea simple, en realidad hay que comprobar cada carácter para ver si mide 1, 2, 3 o 4 u8s de longitud. Si sabemos que un &str es ASCII, podemos llamar a .as_bytes() y referirnos a los datos subyacentes como un &[u8] (slice de bytes). Iterar sobre un slice de bytes ASCII es mucho más rápido, ya que no hay puntos de código implicados: cada byte ASCII ocupa un solo u8.

¿Puedes completar el reto sin clonar la entrada?

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

¿Listo para empezar Buscaminas?

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

¡Análisis en profundidad de Buscaminas!

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.