Menu Close

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])

4 soluciones de “Ordenación por máximos

  1. Laura Prieto
    import Data.List
     
    ordenadosPorMaximo :: Ord a => [[a]] -> [[a]]
    ordenadosPorMaximo xss = [y | (x,y) <- ordenados xss]
     
    ordenados xss = sort [(maximum xs,xs) | xs <- xss]
    • Abel Martín

      Se puede simplificar como sigue

      import Data.List
       
      ordenadosPorMaximo :: Ord a => [[a]] -> [[a]]
      ordenadosPorMaximo xss =
          [xs | (_,xs) <- sort [(maximum xs,xs) | xs <- xss]]
  2. David Argullo
    import Data.List
     
    ordenadosPorMaximo :: Ord a => [[a]] -> [[a]]
    ordenadosPorMaximo xss =[xs | (y,xs) <- maximosOrdenados]
        where maximosOrdenados = sort [(maximum xs,xs) | xs <- xss]
  3. Abel Martín
    import Data.List
     
    ordenadosPorMaximo :: Ord a => [[a]] -> [[a]]
    ordenadosPorMaximo xss =
        map snd (sort [(maximum xs,xs) | xs <- xss])

Leave a Reply

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.