Repeticiones consecutivas
Se dice que una palabra tiene una repetición en una frase si es igual a una, o más, de las palabras consecutivas sin distinguir mayúsculas de minúsculas.
Definir la función
nRepeticionesConsecutivas :: String ->Int
tal que (nRepeticionesConsecutivas cs) es el número de repeticiones de palabras consecutivas de la cadena cs. Por ejemplo,
nRepeticionesConsecutivas "oso rana" == 0 nRepeticionesConsecutivas "oso rana oso" == 0 nRepeticionesConsecutivas "oso oSo rana" == 1 nRepeticionesConsecutivas "oso oso oso rana" == 1 nRepeticionesConsecutivas "coronavirus virus oso rana" == 0 nRepeticionesConsecutivas "virus virus oso rana" == 1 nRepeticionesConsecutivas "virus oso virus oso rana" == 0 nRepeticionesConsecutivas "oso oso oso oso oso oso" == 1 nRepeticionesConsecutivas "oso oso oso oso rana rana" == 2 nRepeticionesConsecutivas "rana rana oso oso rana rana" == 3
Soluciones
import Data.List (group) import Data.Char (toUpper) -- 1ª solución nRepeticionesConsecutivas :: String ->Int nRepeticionesConsecutivas cs = length [xs | xs <- group (words (map toUpper cs)), length xs > 1] -- 2ª solución nRepeticionesConsecutivas2 :: String ->Int nRepeticionesConsecutivas2 = length . filter ((>1) . length) . group . words . map toUpper