Menu Close

Categoría: Medio

Ordenación por máximos

Enunciado

-- Definir la función 
--    ordenadosPorMaximo :: Ord a => [[a]] -> [[a]]
-- tal que (ordenadosPorMaximo xss) es la lista de los elementos de xss
-- ordenada por sus máximos. Por ejemplo,
--    ghci> ordenadosPorMaximo [[3,2],[6,7,5],[1,4]]
--    [[3,2],[1,4],[6,7,5]]
--    ghci> ordenadosPorMaximo ["este","es","el","primero"]
--    ["el","primero","es","este"]

Soluciones

import Data.List
 
-- 1ª definición (por compresión)
ordenadosPorMaximo :: Ord a => [[a]] -> [[a]]
ordenadosPorMaximo xss =
    [xs | (_,xs) <- sort [(maximum xs,xs) | xs <- xss]]
 
-- 2ª definición (con map)
ordenadosPorMaximo2 :: Ord a => [[a]] -> [[a]]
ordenadosPorMaximo2 xss =
    map snd (sort [(maximum xs,xs) | xs <- xss])