Definir la función
posicionesMayusculas :: String -> [Int] |
posicionesMayusculas :: String -> [Int]
tal que (posicionesMayusculas cs) es la lista de las posiciones de las mayúsculas de la cadena cs. Por ejemplo,
posicionesMayusculas "SeViLLa" == [0,2,4,5]
posicionesMayusculas "aAbB" == [1,3]
posicionesMayusculas "ABCDEF" == [0,1,2,3,4,5]
posicionesMayusculas "4ysdf4" == []
posicionesMayusculas "" == [] |
posicionesMayusculas "SeViLLa" == [0,2,4,5]
posicionesMayusculas "aAbB" == [1,3]
posicionesMayusculas "ABCDEF" == [0,1,2,3,4,5]
posicionesMayusculas "4ysdf4" == []
posicionesMayusculas "" == []
Soluciones
import Data.Char (isUpper)
import Data.List (findIndices)
-- 1ª solución
posicionesMayusculas :: String -> [Int]
posicionesMayusculas xs = [n | (n,x) <- zip [0..] xs, isUpper x]
-- 2ª solución
posicionesMayusculas2 :: String -> [Int]
posicionesMayusculas2 = aux 0 []
where aux n ns [] = reverse ns
aux n ns (y:ys) | isUpper y = aux (n+1) (n:ns) ys
| otherwise = aux (n+1) ns ys
-- 3ª solución
posicionesMayusculas3 :: String -> [Int]
posicionesMayusculas3 = findIndices isUpper |
import Data.Char (isUpper)
import Data.List (findIndices)
-- 1ª solución
posicionesMayusculas :: String -> [Int]
posicionesMayusculas xs = [n | (n,x) <- zip [0..] xs, isUpper x]
-- 2ª solución
posicionesMayusculas2 :: String -> [Int]
posicionesMayusculas2 = aux 0 []
where aux n ns [] = reverse ns
aux n ns (y:ys) | isUpper y = aux (n+1) (n:ns) ys
| otherwise = aux (n+1) ns ys
-- 3ª solución
posicionesMayusculas3 :: String -> [Int]
posicionesMayusculas3 = findIndices isUpper