Menu Close

Mayúscula inicial

Enunciado

-- 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"

Soluciones

import Data.Char
 
-- 1ª definición (por comprensión):
mayusculaInicial :: String -> String
mayusculaInicial [] = []
mayusculaInicial (x:xs) = toUpper x : [toLower x | x <- xs]
 
-- 2ª definición (por recursión):
mayusculaInicialRec :: String -> String
mayusculaInicialRec [] = []
mayusculaInicialRec (x:xs) = toUpper x : aux xs
    where aux (x:xs) = toLower x : aux xs
          aux []     = []

10 soluciones de “Mayúscula inicial

  1. Tamara Royán González
    import Data.Char
     
    mayusculaInicial :: String -> String
    mayusculaInicial [] = []
    mayusculaInicial (x:xs) = toUpper x : [toLower x | x <- xs]
  2. Julián Galindo
    import Data.Char
     
    mayusculaInicial :: String -> String
    mayusculaInicial [] = []
    mayusculaInicial (x:xs) = (toUpper x):[toLower n | n <- xs]
  3. Jesús Navas Orozco
    import Data.Char
     
    mayusculaInicial :: String -> String
    mayusculaInicial [] = []
    mayusculaInicial (x:xs) = toUpper x : [toLower y| y <- xs]
  4. Eduardo Román
     
    import Data.Char
     
    mayusculaInicial :: String -> String
    mayusculaInicial []     = []
    mayusculaInicial (x:xs) = toUpper x :[toLower y|y<-xs]
  5. Jasone Ramírez
    import Data.Char
     
    mayusculaInicial :: String -> String
    mayusculaInicial [] = []
    mayusculaInicial xs = [y]++ys
        where y  = toUpper (head xs)
              ys = [toLower x | x <- tail xs]
  6. Jesús Camacho Moro
    import Data.Char
     
    mayusculaInicial (x:xs) = primeraMayuscula x ++ letrasMinusculas xs
     
    letrasMinusculas [x]= if ord x >96 then [x] else [chr ((ord x)+32)]
    letrasMinusculas (x:xs) = if ord x >96 then x:letrasMinusculas xs
                              else chr (ord (x) +32):letrasMinusculas xs
     
    primeraMayuscula x = if ord x >96 then [chr ((ord x)-32)] else [x]
  7. Lorena Rivas
     
    import Data.Char
     
    mayusculaInicial :: String -> String
    mayusculaInicial []     = []
    mayusculaInicial (x:xs) = toUpper x : [toLower c | c <- xs]
  8. Rafa
    import Data.Char 
     
    mayusculaInicialA5 :: String -> String
    mayusculaInicialA5 (x:xs) = [chr (ord x - 32)] ++ todoaminusculas xs
    mayusculaInicialA5 [] = []
     
    todoaminusculas :: String -> String
    todoaminusculas (x:xs) 
        | isLower x = [x]++ todoaminusculas xs
        | otherwise = [chr (ord x + 32)] ++ todoaminusculas xs
    todoaminusculas [] = []
    • Rafa

      No conocía las funciones que habían usado los demás. Igualmente he encontrado un fallo en mí definición.

      mayusculaInicialA5 :: String -> String
      mayusculaInicialA5 (x:xs) | isLower x = [chr (ord x - 32)] ++
                                              todoaminusculas xs
                                | otherwise = x:todoaminusculas xs
       
      mayusculaInicialA5 [] = []
       
      todoaminusculas :: String -> String
      todoaminusculas (x:xs) 
          | isLower x = [x]++ todoaminusculas xs
          | otherwise = [chr (ord x + 32)] ++ todoaminusculas xs
      todoaminusculas [] = []

Escribe tu solución

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.