Planeas construir una casa en un árbol en el bosque cerca de tu casa, para que puedas ver el amanecer y el atardecer.
Obtuviste datos de una empresa local de topografía que muestran la altura de cada árbol en cada sección rectangular del mapa. Necesitas analizar cada cuadrícula del mapa para encontrar buenos árboles para tu casa en el árbol.
Un buen árbol cumple dos condiciones:
Tu tarea es encontrar los posibles árboles donde podrías construir tu casa del árbol.
La empresa de datos proporciona los datos en forma de cuadrículas que muestran las alturas de los árboles. Las filas de la cuadrícula representan la dirección este-oeste, y las columnas representan la dirección norte-sur.
Un árbol aceptable será el más grande de su fila y, a la vez, el más pequeño de su columna.
Puede que una cuadrícula no tenga ningún árbol bueno. O puede que tenga uno, o incluso varios.
Aquí tienes una cuadrícula que tiene exactamente un árbol candidato.
↓
1 2 3 4
|-----------
1 | 9 8 7 8
→ 2 |[5] 3 2 4
3 | 6 6 7 1
Entonces, el punto en [2, 1] (fila: 2, columna: 1) es un excelente lugar para una casa del árbol.
Por convención, las secuencias ordenadas de valores en Rust tienen sus contenidos numerados («indexados») a partir de 0. Esto se aplica sin importar lo que diga el resto de la descripción del ejercicio en este README, como las referencias a índices que empiezan en 1, así que tendrás que restar 1 para traducir esos números de índice a los números de índice de Rust.
Este ejercicio usa un vector de vectores para almacenar el contenido de las matrices. Si bien este ejercicio está diseñado para ayudar a los estudiantes a entender conceptos básicos sobre los vectores, como la indexación, y que los tipos de datos anidados son válidos, el vector de vectores es una opción subóptima para el álgebra de matrices de alto rendimiento y para cualquier procesamiento eficiente similar de grandes cantidades de datos.
La explicación detallada de esta ineficiencia está fuera del alcance de este ejercicio y de esta ruta de aprendizaje en general. Este aspecto se conoce como localidad de caché y puedes encontrar una buena introducción al respecto haciendo clic en ese enlace si quieres aprender más sobre los detalles de una arquitectura de computadoras moderna.
Regístrate en Exercism para aprender y dominar Rust con 99 ejercicios y mentoría humana real, todo gratis.