Herramientas de usuario

Herramientas del sitio


introalg:taller07_5

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
introalg:taller07_5 [2007/05/30 01:14] – elemento necesita Eq a => nicolaswintroalg:taller07_5 [2018/08/10 03:03] (actual) – editor externo 127.0.0.1
Línea 169: Línea 169:
 listadoMuni = [("Rubén Daniele",7632663,"21/12/1957"),("Amanda Buendía",37643221,"04/06/1987"),("Caridad Canelón",41122332,"29/2/2000")] listadoMuni = [("Rubén Daniele",7632663,"21/12/1957"),("Amanda Buendía",37643221,"04/06/1987"),("Caridad Canelón",41122332,"29/2/2000")]
 </code> </code>
 +
  
 ===== Manejando cosas más complejas ===== ===== Manejando cosas más complejas =====
Línea 190: Línea 191:
 <code> <code>
 -- extensión para poder leer archivos en Strings -- extensión para poder leer archivos en Strings
-import IOExts+import Hugs.IOExts(unsafePerformIO)
  
 -- constante principal con el grafo de la web. -- constante principal con el grafo de la web.
Línea 198: Línea 199:
 -- carga un archivo en un String, usa IOExts -- carga un archivo en un String, usa IOExts
 leeArchivo :: String -> String leeArchivo :: String -> String
-leeArchivo nombre = unsafePerformIO$ readFile nombre+leeArchivo nombre = unsafePerformIO $ readFile nombre
  
 -- transforma el contenido del archivo de String a lista de tuplas -- transforma el contenido del archivo de String a lista de tuplas
Línea 206: Línea 207:
    where    where
         fuente = takeWhile (not.esSeparador) xs         fuente = takeWhile (not.esSeparador) xs
-        todoMenosFuente = drop 1 (dropWhile (not.esSeparador) xs)+        todoMenosFuente = dropWhile esSeparador (dropWhile (not.esSeparador) xs)
         destino = takeWhile (not.esFinLinea) todoMenosFuente         destino = takeWhile (not.esFinLinea) todoMenosFuente
-        resto = drop 1 (dropWhile (not.esFinLinea) todoMenosFuente)+        resto = dropWhile esFinLinea (dropWhile (not.esFinLinea) todoMenosFuente)
  
 esSeparador,esFinLinea :: Char -> Bool esSeparador,esFinLinea :: Char -> Bool
-esSeparador x = x=='|' +esSeparador x = elem "" 
-esFinLinea  x = x=='\n'+esFinLinea  x = elem "\n\r"
 </code> </code>
  
Línea 227: Línea 228:
   Main> take 32 (map fst webGraph)   Main> take 32 (map fst webGraph)
   ["http://ana-gabriel.letras.terra.com.br/letras/168154/","http://ana-gabriel.letras.terra.com.br/letras/168154/","http://ana-gabriel.lyrics-songs.com/lyrics/168154/"   ["http://ana-gabriel.letras.terra.com.br/letras/168154/","http://ana-gabriel.letras.terra.com.br/letras/168154/","http://ana-gabriel.lyrics-songs.com/lyrics/168154/"
- 
- 
- 
  
  
Línea 237: Línea 235:
 Vamos a desarrollar diferentes funciones para obtener información de esta lista.  Vamos a desarrollar diferentes funciones para obtener información de esta lista. 
  
-  * Antes que nada necesitamos definir un par de funciones auxiliares:+  * Determinar cuales y cuantas páginas se apuntan a si mismas. 
 +  * Para los siguientes puntos necesitaremos definir un par de funciones auxiliares:
     * //primeros :: [(a,b)] -> [a]// y //segundos :: [(a,b)] -> [b]// que le toman la primera y segunda coordenada a cada elemento de la lista de pares. Sirve para obtener todas las urls fuente y destino respectivamente. Ayuda: con ''map'' alcanza.     * //primeros :: [(a,b)] -> [a]// y //segundos :: [(a,b)] -> [b]// que le toman la primera y segunda coordenada a cada elemento de la lista de pares. Sirve para obtener todas las urls fuente y destino respectivamente. Ayuda: con ''map'' alcanza.
     * //concatenaPares :: [(a,a)] -> [a]// que devuelve la concatenación de todos los pares de la lista. Sirve para obtener una lista "plana" de los urls. Observación: se puede hacer una definición recursiva o bien utilizar las anteriores y ''++''.     * //concatenaPares :: [(a,a)] -> [a]// que devuelve la concatenación de todos los pares de la lista. Sirve para obtener una lista "plana" de los urls. Observación: se puede hacer una definición recursiva o bien utilizar las anteriores y ''++''.
introalg/taller07_5.1180487696.txt.gz · Última modificación: 2018/08/10 03:03 (editor externo)