introalg:rincon
Diferencias
Muestra las diferencias entre dos versiones de la página.
introalg:rincon [2006/06/05 20:54] – 200.16.31.2 | introalg:rincon [2018/08/10 03:03] (actual) – editor externo 127.0.0.1 | ||
---|---|---|---|
Línea 92: | Línea 92: | ||
===== Ejercicios capítulo 8 del Extracto del Cálculo de Programas ===== | ===== Ejercicios capítulo 8 del Extracto del Cálculo de Programas ===== | ||
+ | |||
==== Soluciones de Ejercicio 8.7 (edad) ==== | ==== Soluciones de Ejercicio 8.7 (edad) ==== | ||
Línea 128: | Línea 129: | ||
| (m > m' || (m == m' && d > d')) = y' - y - 1 | | (m > m' || (m == m' && d > d')) = y' - y - 1 | ||
+ | (José Neder) Este es mas lindo a la vista: | ||
+ | |||
+ | edad :: (Int, Int, Int) -> (Int, Int, Int) -> Int | ||
+ | edad (x,y,z) (o,p,q) | y< | ||
+ | | otherwise = q-z-1 | ||
==== Soluciones de Ejercicio 8.8 (área del prisma rectangular) ==== | ==== Soluciones de Ejercicio 8.8 (área del prisma rectangular) ==== | ||
Línea 238: | Línea 244: | ||
| (unmil x) == 7 || (centena x) == 7 || (decena x) == 7 || (unidad x) ==7 = True | | (unmil x) == 7 || (centena x) == 7 || (decena x) == 7 || (unidad x) ==7 = True | ||
| otherwise | | otherwise | ||
+ | |||
==== Ejercicio 7 ==== | ==== Ejercicio 7 ==== | ||
Línea 267: | Línea 274: | ||
>> (PabloZ) Hay que validar la información y en caso que sea un valor no valido hay que darle al usuario un mensaje de error que pueda entender. | >> (PabloZ) Hay que validar la información y en caso que sea un valor no valido hay que darle al usuario un mensaje de error que pueda entender. | ||
cabeza :: [a] -> a | cabeza :: [a] -> a | ||
- | cabeza | + | cabeza |
cabeza (x:xs) = x | cabeza (x:xs) = x | ||
Línea 388: | Línea 395: | ||
int2Float :: Int -> Float | int2Float :: Int -> Float | ||
- | int2Float | + | int2Float = fromIntegral |
Entonces, podemos usar, cada vez que necesitemos la longitud de una lista (pero como un Float): | Entonces, podemos usar, cada vez que necesitemos la longitud de una lista (pero como un Float): | ||
Línea 480: | Línea 487: | ||
José Neder | José Neder | ||
+ | |||
+ | |||
+ | |||
==== Ejercicio 16 ==== | ==== Ejercicio 16 ==== | ||
Línea 500: | Línea 510: | ||
>>> | >>> | ||
+ | desdehasta :: Int -> Int -> [Int] | ||
+ | desdehasta a b |a<b = [a..b] | ||
+ | |a==b = [a] | ||
+ | | ||
+ | |||
+ | > Tambien lo hice yo desde esta forma. (PATRICK R.) | ||
+ | |||
+ | desde :: Int -> Int -> [Int] | ||
+ | desde x y | ||
+ | |x > y = x:desde (x-1) y | ||
+ | |x < y = x:desde (x+1) y | ||
+ | |otherwise = [y] | ||
==== Ejercicio 17 ==== | ==== Ejercicio 17 ==== | ||
Línea 554: | Línea 576: | ||
ceroOUno x = x==0 || x==1 | ceroOUno x = x==0 || x==1 | ||
> no es necesario dividir en el caso base y el inductivo, esto ya lo hace '' | > no es necesario dividir en el caso base y el inductivo, esto ya lo hace '' | ||
+ | |||
+ | listabin :: [Int] -> Bool | ||
+ | listabin [] = False | ||
+ | listabin [x] |x==1 || x==0 = True | ||
+ | | ||
+ | listabin (x:xs) |(x==1 || x==0) && listabin xs = True | ||
+ | |otherwise = False | ||
| | ||
Línea 725: | Línea 754: | ||
Ahora tambien sabemos que si no tiene divisores hasta la raiz, es primo por lo que defini esta otra, un poco mas complicada, gracias a la funcion definida por "" | Ahora tambien sabemos que si no tiene divisores hasta la raiz, es primo por lo que defini esta otra, un poco mas complicada, gracias a la funcion definida por "" | ||
- | |||
- | int2Float :: Int -> Float | ||
- | int2Float n = fromInteger (toInteger n) | ||
primo5 :: Int -> Bool | primo5 :: Int -> Bool | ||
primo5 1 = False | primo5 1 = False | ||
- | primo5 x = (filtro (multiplo x) (desdeHasta 1 (round (sqrt (int2Float | + | primo5 x = (filtro (multiplo x) (desdeHasta 1 (round (sqrt (fromIntegral |
----- | ----- | ||
Línea 760: | Línea 786: | ||
int2float :: Int -> Float | int2float :: Int -> Float | ||
- | int2float | + | int2float = fromIntegral |
float2int :: Float -> Int | float2int :: Float -> Int | ||
- | float2int | + | float2int = round |
Línea 1131: | Línea 1157: | ||
dosalan3 :: Float -> Float | dosalan3 :: Float -> Float | ||
dosalan3 n = 2 //aca van 2 estellitas// | dosalan3 n = 2 //aca van 2 estellitas// | ||
+ | |||
+ | |||
Línea 1243: | Línea 1271: | ||
De nuevo, tenemos **lo mejor de dos mundos**, claridad y velocidad, el ingrediente clave fue la utilización de definiciones locales que hacen que el cómputo del triángulo anterior y de la fila anterior solo se hagan 1 vez y se // | De nuevo, tenemos **lo mejor de dos mundos**, claridad y velocidad, el ingrediente clave fue la utilización de definiciones locales que hacen que el cómputo del triángulo anterior y de la fila anterior solo se hagan 1 vez y se // | ||
superior. | superior. | ||
- | harian el favor de colocar en la compu con el proyector que da al pisarron, por fa agranden la letra que no se ve nada. | ||
- | |||
>(José Neder)Utilizando la idea de definirlo con **definiciones locales** redefino la funcion asi: | >(José Neder)Utilizando la idea de definirlo con **definiciones locales** redefino la funcion asi: | ||
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | where listpasn4 :: [[Int]] -> Int -> [[Int]] | + | |
- | listpasn4 [] n = [[1]] | + | where (x:xs) = tripascal7 (n-1) |
- | listpasn4 | + | |
- | | + | |
[[1, | [[1, | ||
- | (988 reductions, | + | (807 reductions, |
+ | |||
+ | |||
+ | |||
+ | >(José Neder) aca la volvi a hacer de la manera que yo lo habia hecho y es un poquito mas rapida | ||
+ | |||
+ | foldnr :: (a -> a) -> a -> Int -> a | ||
+ | foldnr a x 0 = a x | ||
+ | foldnr a x n = a (foldnr a x (n-1)) | ||
+ | |||
+ | p2' :: [Int] -> [Int] | ||
+ | p2' [x] = [x] | ||
+ | p2' (x:y:ys) = x+y: | ||
+ | |||
+ | p2 :: [[Int]] -> [[Int]] | ||
+ | p2 [] = [[1]] | ||
+ | p2 ((x:xs):ys) = (x:p2' (x: | ||
+ | |||
+ | tripascal6 :: Int -> [[Int]] | ||
+ | tripascal6 n = foldnr p2 [] n | ||
+ | |||
+ | Practico8> | ||
+ | [[1, | ||
+ | (788 reductions, 1434 cells) | ||
===== Clase 4 ===== | ===== Clase 4 ===== | ||
Línea 1335: | Línea 1383: | ||
where buscparmin :: Ord b => [(a,b)] -> (a,b) -> [(a,b)] | where buscparmin :: Ord b => [(a,b)] -> (a,b) -> [(a,b)] | ||
buscparmin [] x = [x] | buscparmin [] x = [x] | ||
- | buscparmin ((a,b):xs) (c,d) | d<=b = (c, | + | buscparmin ((a,b):xs) (c,d) | d>=b = (c, |
| otherwise = (a, | | otherwise = (a, | ||
+ | |||
+ | he aqui una implementacion de lo aprendido pero sobre otro lenguaje en este caso c: | ||
+ | |||
+ | FUNCIÓN FACTORIAL | ||
+ | # include < | ||
+ | long factorial(long); | ||
+ | |||
+ | main() | ||
+ | { | ||
+ | int i; | ||
+ | |||
+ | | ||
+ | | ||
+ | for(i = 1;i <= n; i ++) | ||
+ | | ||
+ | return 0; | ||
+ | } | ||
+ | | ||
+ | |||
+ | /* Definición recursiva de la función factorial*/ | ||
+ | |||
+ | long factorial(long number) | ||
+ | { | ||
+ | if (number <= 1) | ||
+ | | ||
+ | | ||
+ | return (number * factorial (number-1)); | ||
+ | } | ||
+ | y disculpen por meterme hablando de otro tema, pero aquellos que creen saber programar en c seguramente ahora lo veran de otra forma |
introalg/rincon.1149540897.txt.gz · Última modificación: 2018/08/10 03:03 (editor externo)