introalg:rincon
Diferencias
Muestra las diferencias entre dos versiones de la página.
introalg:rincon [2006/06/16 19:33] – 200.122.65.171 | introalg:rincon [2018/08/10 03:03] (actual) – editor externo 127.0.0.1 | ||
---|---|---|---|
Línea 244: | 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 273: | 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 394: | 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 486: | Línea 487: | ||
José Neder | José Neder | ||
+ | |||
+ | |||
+ | |||
==== Ejercicio 16 ==== | ==== Ejercicio 16 ==== | ||
Línea 506: | 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 560: | 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 731: | 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 766: | Línea 786: | ||
int2float :: Int -> Float | int2float :: Int -> Float | ||
- | int2float | + | int2float = fromIntegral |
float2int :: Float -> Int | float2int :: Float -> Int | ||
- | float2int | + | float2int = round |
Línea 1137: | 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 1249: | 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 1374: | Línea 1416: | ||
y disculpen por meterme hablando de otro tema, pero aquellos que creen saber programar en c seguramente ahora lo veran de otra forma | 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.1150486414.txt.gz · Última modificación: 2018/08/10 03:03 (editor externo)