Rutas
/
Python
Python
/
Ejercicios
/
Puntos de silla
Puntos de silla

Puntos de silla

Fácil

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.

Mensajes de excepción

A veces es necesario lanzar una excepción. Cuando lo hagas, siempre debes incluir un mensaje de error significativo que indique cuál es el origen del error. Esto hace que tu código sea más legible y ayuda mucho a la hora de depurar. En situaciones en las que sabes que el origen del error será de un tipo concreto, puedes optar por lanzar uno de los tipos de error integrados, pero aun así debes incluir un mensaje significativo.

Este ejercicio en particular requiere que uses la instrucción raise para «lanzar» un ValueError si la matrix es irregular. Las pruebas solo pasarán si tanto usas raise en la exception como incluyes un mensaje con ella.

Para lanzar un ValueError con un mensaje, escribe el mensaje como argumento del tipo exception:

# if the matrix is irregular
raise ValueError("irregular matrix")
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Python Exercism

¿Listo para empezar Puntos de silla?

Regístrate en Exercism para aprender y dominar Python con 17 conceptos146 ejercicios y mentoría humana real, todo gratis.