Máximo de una lista
Definir la función
maximo :: Ord a => [a] -> a
tal que maximo xs
es el máximo de la lista xs
. Por ejemplo,
maximo [3,7,2,5] == 7 maximo ["todo","es","falso"] == "todo" maximo ["menos","alguna","cosa"] == "menos"
Definir la función
maximo :: Ord a => [a] -> a
tal que maximo xs
es el máximo de la lista xs
. Por ejemplo,
maximo [3,7,2,5] == 7 maximo ["todo","es","falso"] == "todo" maximo ["menos","alguna","cosa"] == "menos"
Definir la función
filtraAplica :: (a -> b) -> (a -> Bool) -> [a] -> [b]
tal que filtraAplica f p xs
es la lista obtenida aplicándole a los elementos de xs
que cumplen el predicado p
la función f
. Por ejemplo,
filtraAplica (4+) (<3) [1..7] == [5,6]
Definir, por recursión, la función
conc :: [[a]] -> [a]
tal que conc xss
es la concenación de las listas de xss
. Por ejemplo,
conc [[1,3],[2,4,6],[1,9]] == [1,3,2,4,6,1,9]
Comprobar con QuickCheck que la longitud de conc xss
es la suma de las longitudes de los elementos de xss
.
Definir la función
agrupa :: Eq a => [[a]] -> [[a]]
tal que agrupa xss
es la lista de las listas obtenidas agrupando los primeros elementos, los segundos, ... Por ejemplo,
agrupa [[1..6],[7..9],[10..20]] == [[1,7,10],[2,8,11],[3,9,12]]
Comprobar con QuickChek que la longitud de todos los elementos de agrupa xs
es igual a la longitud de xs
.
Definir la función
relacionados :: (a -> a -> Bool) -> [a] -> Bool
tal que relacionados r xs
se verifica si para todo par (x,y)
de elementos consecutivos de xs
se cumple la relación r
. Por ejemplo,
relacionados (<) [2,3,7,9] == True relacionados (<) [2,3,1,9] == False
Definir la función
segmentos :: (a -> Bool) -> [a] -> [[a]]
tal que segmentos p xs
es la lista de los segmentos de xs
cuyos elementos verifican la propiedad p
. Por ejemplo,
segmentos even [1,2,0,4,9,6,4,5,7,2] == [[2,0,4],[6,4],[2]] segmentos odd [1,2,0,4,9,6,4,5,7,2] == [[1],[9],[5,7]]
Definir, por recursión, la función
esSubcadena :: String -> String -> Bool
tal que esSubcadena xs ys
se verifica si xs
es una subcadena de ys
. Por ejemplo,
esSubcadena "casa" "escasamente" == True esSubcadena "cante" "escasamente" == False esSubcadena "" "" == True
Definir la función
posiciones :: Char -> String -> [Int]
tal que posiciones x ys
es la lista de la posiciones del carácter x
en la cadena ys
. Por ejemplo,
posiciones 'a' "Salamamca" == [1,3,5,8]
Se consideran las siguientes reglas de mayúsculas iniciales para los títulos:
Definir la función
titulo :: [String] -> [String]
tal que titulo ps
es la lista de las palabras de ps
con las reglas de mayúsculas iniciales de los títulos. Por ejemplo,
λ> titulo ["eL","arTE","DE","La","proGraMacion"] ["El","Arte","de","la","Programacion"]
Definir la función
mayusculaInicial :: String -> String
tal que mayusculaInicial xs
es la palabra xs
con la letra inicial en mayúscula y las restantes en minúsculas. Por ejemplo,
mayusculaInicial "sEviLLa" == "Sevilla" mayusculaInicial "" == ""