Mínimos locales
Enunciado
1 2 3 4 5 6 7 8 9 10 11 12 |
-- Un mínimo local de una lista es un elemento de la lista que es menor -- que su predecesor y que su sucesor en la lista. Por ejemplo, 1 es un -- mínimo local de [3,2,1,3,7,7,1,0,2] ya que es menor que 2 (su -- predecesor) y que 3 (su sucesor). -- -- Definir la función -- minimosLocales :: Ord a => [a] -> [a] -- tal que (minimosLocales xs) es la lista de los mínimos locales de la -- lista xs. Por ejemplo, -- minimosLocales [3,2,1,3,7,7,9,6,8] == [1,6] -- minimosLocales [1..100] == [] -- minimosLocales "mqexvzat" == "eva" |
Soluciones
[schedule expon=’2014-11-26′ expat=»06:00″]
- Las soluciones se pueden escribir en los comentarios hasta el 26 de noviembre.
- El código se debe escribir entre una línea con <pre lang=»haskell»> y otra con </pre>
[/schedule]
[schedule on=’2014-11-26′ at=»06:00″]
1 2 3 4 5 6 7 8 9 10 |
-- 1ª definición (por recursión): minimosLocales1 :: Ord a => [a] -> [a] minimosLocales1 (x:y:z:xs) | y < x && y < z = y : minimosLocales1 (z:xs) | otherwise = minimosLocales1 (y:z:xs) minimosLocales1 _ = [] -- 2ª definición (por comprensión): minimosLocales2 :: Ord a => [a] -> [a] minimosLocales2 xs = [y | (x,y,z) <- zip3 xs (tail xs) (drop 2 xs), y < x, y < z] |
[/schedule]
2 Comentarios