Punto de inflexión
Definir la función
inflexion :: Ord a => [a] -> Maybe a
tal que (inflexion xs) es el primer elemento de la lista en donde se cambia de creciente a decreciente o de decreciente a creciente y Nothing si no se cambia. Por ejemplo,
inflexion [2,2,3,5,4,6] == Just 4 inflexion [9,8,6,7,10,10] == Just 7 inflexion [2,2,3,5] == Nothing inflexion [5,3,2,2] == Nothing
Soluciones
inflexion :: Ord a => [a] -> Maybe a inflexion (x:y:zs) | x < y = decreciente (y:zs) | x == y = inflexion (y:zs) | otherwise = creciente (y:zs) inflexion _ = Nothing -- (creciente xs) es el segundo elemento de la primera parte creciente -- de xs y Nothing, en caso contrario. Por ejemplo, -- creciente [4,3,5,6] == Just 5 -- creciente [4,3,5,2,7] == Just 5 -- creciente [4,3,2] == Nothing creciente (x:y:zs) | x < y = Just y | otherwise = creciente (y:zs) creciente _ = Nothing -- (decreciente xs) es el segundo elemento de la primera parte -- decreciente de xs y Nothing, en caso contrario. Por ejemplo, -- decreciente [4,2,3,1,0] == Just 2 -- decreciente [4,5,3,1,0] == Just 3 -- decreciente [4,5,7] == Nothing decreciente (x:y:zs) | x > y = Just y | otherwise = decreciente (y:zs) decreciente _ = Nothing