Edición de «Práctica 1 (Paradigmas)»
De Cuba-Wiki
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 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] | ||
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 | 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 | ||
== 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)) | ||
== 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))] | ||
== 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 | 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 | potencia base = foldNat 1 (*base) | ||
== Ejercicio 18 == | == Ejercicio 18 == |