Edición de «Práctica 0 (pre 2010, Paradigmas)»

De Cuba-Wiki
Advertencia: no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.

Puedes deshacer la edición. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces publica los cambios para así efectuar la reversión.

Revisión actual Tu texto
Línea 4: Línea 4:
a)
a)
absoluto :: Float -> Float
absoluto :: Float -> Float
absoluto f | f < 0 = negate f
absoluto f | f < 0 = negate f
  | otherwise = f
  | otherwise = f


Línea 12: Línea 10:
b)
b)
bisiesto :: Int -> Bool
bisiesto :: Int -> Bool
bisiesto n | ((n `mod` 100) == 0) = False
bisiesto n | ((n `mod` 100) == 0) = False
| ((n `mod` 4) == 0) = True
| ((n `mod` 4) == 0) = True
| otherwise = False
| otherwise = False


Línea 23: Línea 18:
c)
c)
factorial :: Int -> Int
factorial :: Int -> Int
factorial n | (n == 0) = 1
factorial n | (n == 0) = 1
| (n == 1) = 1
| (n == 1) = 1
| otherwise = n * factorial (n-1)
| otherwise = n * factorial (n-1)


Línea 35: Línea 27:
cantDivisoresPrimos :: Int -> Int
cantDivisoresPrimos :: Int -> Int
cantDivisoresPrimos n = cantDivisoresPrimosAux n n
cantDivisoresPrimos n = cantDivisoresPrimosAux n n


cantDivisoresPrimosAux :: Int -> Int -> Int
cantDivisoresPrimosAux :: Int -> Int -> Int
cantDivisoresPrimosAux n i | (i == 1) = 0
cantDivisoresPrimosAux n i | (i == 1) = 0
| ((esPrimo(i)) && ((n `mod` i)==0)) = 1 + cantDivisoresPrimosAux n (i-1)
| ((esPrimo(i)) && ((n `mod` i)==0)) = 1 + cantDivisoresPrimosAux n (i-1)
| otherwise = cantDivisoresPrimosAux n (i-1)
| otherwise = cantDivisoresPrimosAux n (i-1)


esPrimo n = not (factors 2 n)
esPrimo n = not (factors 2 n)


factors m n | m == n = False
factors m n | m == n = False
            | m < n  = divides m n || factors (m+1) n
            | m < n  = divides m n || factors (m+1) n


divides a b = (mod b a == 0)
divides a b = (mod b a == 0)


prime 1 = False
prime 1 = False
prime 2 = True
prime 2 = True
prime n = filter (divides n) primes == []
prime n = filter (divides n) primes == []
where numbers = [x | x <- [2..n-1], x*x <= n]
where numbers = [x | x <- [2..n-1], x*x <= n]
primes  = filter prime numbers
primes  = filter prime numbers


Ten en cuenta que todas las contribuciones a Cuba-Wiki pueden ser editadas, modificadas o eliminadas por otros colaboradores. Si no deseas que las modifiquen sin limitaciones, no las publiques aquí.
Al mismo tiempo, asumimos que eres el autor de lo que escribiste, o lo copiaste de una fuente en el dominio público o con licencia libre (véase Cuba-Wiki:Derechos de autor para más detalles). ¡No uses textos con copyright sin permiso!

Para editar esta página, responde la pregunta que aparece abajo (más información):

Cancelar Ayuda de edición (se abre en una ventana nueva)

Plantilla usada en esta página: