N gramas
Un n-grama de una sucesión es una subsucesión de n elementos.
Enunciado
1 2 3 4 5 6 7 8 9 10 |
-- Definir la función -- nGramas :: Int -> [a] -> [[a]] -- tal que (nGramas k xs) es la lista de los n-gramas de xs de longitud -- k. Por ejemplo, -- nGramas 0 "abcd" == [""] -- nGramas 1 "abcd" == ["a","b","c","d"] -- nGramas 2 "abcd" == ["ab","ac","ad","bc","bd","cd"] -- nGramas 3 "abcd" == ["abc","abd","acd","bcd"] -- nGramas 4 "abcd" == ["abcd"] -- nGramas 5 "abcd" == [] |
Soluciones
1 2 3 4 |
nGramas :: Int -> [a] -> [[a]] nGramas 0 xs = [[]] nGramas n [] = [] nGramas n (x:xs) = [x:ys | ys <- nGramas (n-1) xs] ++ nGramas n xs |
Referencia
El ejercicio está basado en el problema del 3 de junio de 1HaskellADay.
2 Comentarios