Edición de «Práctica 1 (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 42: Línea 42:
  uncurry2 :: (a -> b -> c) -> (a,b) -> c
  uncurry2 :: (a -> b -> c) -> (a,b) -> c
  uncurry2 f (a,b) = f a b
  uncurry2 f (a,b) = f a b
== Ejercicio 3 ==
[1,1,2]


== Ejercicio 4 ==
== Ejercicio 4 ==
  pitagóricas :: [(Integer,Integer,Integer)]
  pitagóricas :: [(Integer,Integer,Integer)]
  pitagóricas = [(a,b,c) | a <- [1..], b <-[1..], c <- [1..], a^2 + b^2 == c^2]
  pitagóricas = [(a,b,c) | a <- [1..], b <-[1..], c <- [1..], a^2 + b^2 == c^2]
Se cuelga en (1, 1, inf)
pitagóricas1 = [(a,b,c) | a <- [1..], b <- [1..(a^2)], c <- [1..(a^2 + b^2)], a^2 + b^2 == c^2]


  pitagóricas2 = [(a,b,c) | c <- [1..], a <- [1..c^2], b <- [1..c^2], a^2 + b^2 == c^2]
  pitagóricas' = [(a,b,c) | a <- [1..], b <-[1..(a^2)], c <- [1..(a^2 + b^2)], a^2 + b^2 == c^2]


== Ejercicio 5 ==
== Ejercicio 5 ==
  primos :: [Integer]
  primos :: [Integer]
  primos = take 1000 allPrimes
  primos = take 75 allPrimes
  allPrimes :: [Integer]
  allPrimes :: [Integer]
  allPrimes = [x | x <- [1..], length (divisores x) == 2]
  allPrimes = [x | x <- [1..], length (divisores x) == 2]
Línea 74: Línea 68:
  listasQueSuman :: Int -> [ [Int] ]
  listasQueSuman :: Int -> [ [Int] ]
  listasQueSuman 0 = [[]]
  listasQueSuman 0 = [[]]
  listasQueSuman n = [(x:xs) | x<-[1..n],xs<-listasQueSuman (n-x)]
  listasQueSuman n | n > 0 = [(x:xs) | x<-[1..n],xs<-listasQueSuman (n-x)]


== Ejercicio 8 ==
== Ejercicio 8 ==
  listasPositivas :: [ [Int] ]
  listasPositivas :: [[Int]]
  listasPositivas = [xs | n<-[0..], xs<-listasQueSuman n]
  listasPositivas = [xs | n<-[0..], xs<-listasQueSuman n]


Línea 109: Línea 103:
  sumaAlt :: [Integer] -> Integer
  sumaAlt :: [Integer] -> Integer
  sumaAlt = foldr (-) 0
  sumaAlt = foldr (-) 0
=== III ===
sumaAlt2:: [Integer] -> Integer
sumaAlt2 xs = foldr (-) 0 (reverse xs)


== Ejercicio 10 ==
== Ejercicio 10 ==
Línea 154: Línea 144:
  sublistas :: Eq a => [a] -> [[a]]
  sublistas :: Eq a => [a] -> [[a]]
  sublistas xs = [] : filter (/= []) (concatMap prefijos (sufijos xs))
  sublistas xs = [] : filter (/= []) (concatMap prefijos (sufijos xs))
(bis bis)
sublistas:: Eq a => [a] -> [ [a] ]
sublistas xs = nub [take i (drop j xs) | j <-[0..length xs], i <-[0..length xs]]


== Ejercicio 11 ==
== Ejercicio 11 ==
Línea 169: Línea 154:
  permutaciones [] = [[]]
  permutaciones [] = [[]]
  permutaciones xs = [x:xs2 | x<-xs, xs2<-(permutaciones (sacarUna x xs))]
  permutaciones xs = [x:xs2 | x<-xs, xs2<-(permutaciones (sacarUna x xs))]
=== Solución alternativa, sin recursión explícita ===
permutaciones :: [Char] -> [ [ Char ] ]
permutaciones l = foldr (\head acum -> (concatMap (\perm -> [ (take i perm) ++ [head] ++ (drop i perm) | i <- [0..(length perm)] ]) acum)) [[]] l


== Ejercicio 12 ==
== Ejercicio 12 ==
Línea 298: Línea 279:
=== I ===
=== I ===
  foldNat :: (Integer -> Integer -> Integer) -> Integer -> Integer -> Integer
  foldNat :: (Integer -> Integer -> Integer) -> Integer -> Integer -> Integer
  foldNat f x 0 = x
  foldNat f x 1 = x
  foldNat f x n = f x (foldNat f x (n-1))
  foldNat f x n = f x (foldNat f x (n-1))


=== II ===
=== II ===
  potencia :: Integer -> Integer -> Integer
  potencia :: Integer -> Integer -> Integer
  potencia x = foldNat (\y res-> x * res) 1
  potencia base = foldNat 1 (*base)


== Ejercicio 18 ==
== Ejercicio 18 ==
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)

Plantillas usadas en esta página: