Elementos más frecuentes
Definir la función
1 |
masFrecuentes :: Ord a => Int -> [a] -> [(Int,a)] |
tal que (masFrecuentes n xs) es la lista de los pares formados por los elementos de xs que aparecen más veces junto con el número de veces que aparecen. Por ejemplo,
1 2 3 4 5 6 |
ghci> masFrecuentes 2 "trianera" [(2,'r'),(2,'a')] ghci> masFrecuentes 2 "interdisciplinariedad" [(5,'i'),(3,'d')] ghci> masFrecuentes 3 (show (product [1..10000])) [(5803,'0'),(3416,'2'),(3341,'4')] |
Soluciones
1 2 3 4 5 |
import Data.List (group, sort) masFrecuentes :: Ord a => Int -> [a] -> [(Int,a)] masFrecuentes n = take n . reverse . sort . cuenta . group . sort where cuenta xss = [(length xs,head xs) | xs <- xss] |