Menu Close

Números superpares

Definir la función

   superpar :: Int -> Bool

tal que (superpar n) se verifica si n es un número par tal que todos sus dígitos son pares. Por ejemplo,

   superpar 426  ==  True
   superpar 456  ==  False

Soluciones

-- 1ª definición (por recursión)
superpar :: Int -> Bool
superpar n | n < 10    = even n
           | otherwise = even n && superpar (n `div` 10)
 
-- 2ª definición (por comprensión):
superpar2 :: Int -> Bool
superpar2 n = and [even d | d <- digitos n]
 
digitos :: Int -> [Int]
digitos n = [read [d] | d <- show n]
 
-- 3ª definición (por recursión sobre los dígitos):
superpar3 :: Int -> Bool
superpar3 n = sonPares (digitos n)
    where sonPares []     = True
          sonPares (d:ds) = even d && sonPares ds
 
-- la función sonPares se puede definir por plegado:
superpar3' :: Int -> Bool
superpar3' n = sonPares (digitos n)
    where sonPares ds = foldr ((&&) . even) True ds
 
-- 4ª definición (con all):
superpar4 :: Int -> Bool
superpar4 n = all even (digitos n)
 
-- 5ª definición (con filter):
superpar5 :: Int -> Bool
superpar5 n = filter even (digitos n) == digitos n
 
-- 6ª definición (con filter):
superpar6 :: Int -> Bool
superpar6 n = all (`elem` "02468") (show n)
Inicial

5 soluciones de “Números superpares

  1. angruicam1
    import Data.Char (digitToInt)
     
    superpar :: Int -> Bool
    superpar = all even . map digitToInt . show
  2. albcarcas1
    superpar :: Int -> Bool
    superpar = all even . digitos
      where digitos n = [read [x] | x <- show n]
  3. alerodrod5
     
    import Data.Char (digitToInt)
     
    superpar :: Int -> Bool
    superpar x = filter (even) xs == xs
      where xs = map digitToInt (show x)
  4. esppercab
     
    superpar :: Int -> Bool
    superpar n = and [even (read [x]) | x <- (show n)]
  5. rocruimon

    Por recursión

    superpar :: Int -> Bool
    superpar n | n < 10    = mod n 2 == 0
               | otherwise = mod n 2 == 0 && superpar (div n 10)

Escribe tu solución

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