Copyright | Exercitium (11-05-14) |
---|---|
License | GPL-3 |
Maintainer | JoseA.Alonso@gmail.com |
Safe Haskell | Safe |
Language | Haskell2010 |
Elimina_unitarias
Description
Eliminación de las ocurrencias unitarias
Definir la función
eliminaUnitarias :: Char -> String -> String
tal que (eliminaUnitarias c cs) es la lista obtenida eliminando de la cadena cs las ocurrencias unitarias del carácter c (es decir, aquellas ocurrencias de c tales que su elemento anterior y posterior es distinto de c). Por ejemplo,
>>>
eliminaUnitarias 'X' ""
"">>>
eliminaUnitarias 'X' "X"
"">>>
eliminaUnitarias 'X' "XX"
"XX">>>
eliminaUnitarias 'X' "XXX"
"XXX">>>
eliminaUnitarias 'X' "abcd"
"abcd">>>
eliminaUnitarias 'X' "Xabcd"
"abcd">>>
eliminaUnitarias 'X' "XXabcd"
"XXabcd">>>
eliminaUnitarias 'X' "XXXabcd"
"XXXabcd">>>
eliminaUnitarias 'X' "abcdX"
"abcd">>>
eliminaUnitarias 'X' "abcdXX"
"abcdXX">>>
eliminaUnitarias 'X' "abcdXXX"
"abcdXXX">>>
eliminaUnitarias 'X' "abXcd"
"abcd">>>
eliminaUnitarias 'X' "abXXcd"
"abXXcd">>>
eliminaUnitarias 'X' "abXXXcd"
"abXXXcd">>>
eliminaUnitarias 'X' "XabXcdX"
"abcd">>>
eliminaUnitarias 'X' "XXabXXcdXX"
"XXabXXcdXX">>>
eliminaUnitarias 'X' "XXXabXXXcdXXX"
"XXXabXXXcdXXX">>>
eliminaUnitarias 'X' "XabXXcdXeXXXfXx"
"abXXcdeXXXfx"
- eliminaUnitarias :: Char -> String -> String
- eliminaUnitarias2 :: Char -> String -> String
- eliminaUnitarias3 :: Char -> String -> String
- eliminaUnitarias4 :: Char -> String -> String
- eliminaUnitarias5 :: Char -> String -> String
- eliminaUnitarias6 :: Char -> String -> String
- prop_equiv_eliminaUnitarias :: Char -> String -> Bool
- verifica_equiv_eliminaUnitarias :: IO ()
Documentation
prop_equiv_eliminaUnitarias :: Char -> String -> Bool Source #
(prop_equiv_eliminaUnitarias c cs) se verifica si las definiciones de eliminaUnitarias son equivalentes sobre c y cs. Por ejemplo,
>>>
prop_equiv_eliminaUnitarias 'X' "XabXXcdXeXXXfXx"
True
verifica_equiv_eliminaUnitarias :: IO () Source #
Comprueba la equivalencia de las definiciones de
eliminaUnitarias
.
>>>
verifica_equiv_eliminaUnitarias
+++ OK, passed 100 tests.
Comparación de eficiencia
> length (eliminaUnitarias5 '3' (show (2^100000))) 27599 (2.13 secs, 15,602,672 bytes) > length (eliminaUnitarias '3' (show (2^100000))) 27599 (0.02 secs, 14,934,296 bytes)
> length (eliminaUnitarias '3' (show (2^10000000))) 2766278 (1.94 secs, 1,465,644,920 bytes) > length (eliminaUnitarias2 '3' (show (2^10000000))) 2766278 (1.40 secs, 1,231,149,824 bytes) > length (eliminaUnitarias3 '3' (show (2^10000000))) 2766278 (1.69 secs, 918,640,064 bytes) > length (eliminaUnitarias4 '3' (show (2^10000000))) 2766278 (2.03 secs, 797,135,176 bytes) > length (eliminaUnitarias6 '3' (show (2^10000000))) 2766278 (1.52 secs, 938,221,096 bytes)