Rutas
/
Rust
Rust
/
Ejercicios
/
Puntos de silla
Puntos de silla

Puntos de silla

Media

Introducción

Planeas construir una casa del árbol en el bosque cerca de tu casa para poder ver el amanecer y el atardecer.

Has obtenido 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 del árbol.

Un buen árbol cumple las dos condiciones siguientes:

  • es más alto que todos los árboles que tiene al este y al oeste, para que tengas la mejor vista posible de los amaneceres y los atardeceres.
  • es más bajo que todos los árboles que tiene al norte y al sur, para minimizar la cantidad de veces que tienes que trepar.

Instrucciones

Tu tarea es encontrar los posibles árboles en los que 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 alto de su fila y, a la vez, el más bajo de su columna.

Puede que una cuadrícula no tenga ningún árbol válido. 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
  • La fila 2 tiene los valores 5, 3, 2 y 4. El valor mayor es 5.
  • La columna 1 tiene los valores 9, 5 y 6. El valor menor es 5.

Así que el punto [2, 1] (fila: 2, columna: 1) es un lugar estupendo para una casa del árbol.

Los índices en Rust empiezan en 0

Por convención, el contenido de las secuencias ordenadas de valores en Rust se numera («se indexa») empezando desde 0. Esto se aplica independientemente de 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 convertir esos números de índice en números de índice de Rust.

Aviso de eficiencia

Este ejercicio utiliza un vector de vectores para almacenar el contenido de matrices. Aunque este ejercicio está diseñado para ayudar a los estudiantes a comprender conceptos básicos sobre los vectores, como la indexación, y a entender 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 queda fuera del alcance de este ejercicio y de este itinerario de aprendizaje en general. Este aspecto se conoce como localidad de caché y puedes encontrar una buena introducción a ella haciendo clic en ese enlace si quieres aprender más sobre los detalles de una arquitectura de ordenador moderna.

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

¿Listo para empezar Puntos de silla?

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