introalg:taller07_5
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| introalg:taller07_5 [2007/05/29 22:13] – Un : de más nicolasw | introalg:taller07_5 [2025/11/15 13:47] (actual) – editor externo 127.0.0.1 | ||
|---|---|---|---|
| Línea 169: | Línea 169: | ||
| listadoMuni = [(" | listadoMuni = [(" | ||
| </ | </ | ||
| + | |||
| ===== Manejando cosas más complejas ===== | ===== Manejando cosas más complejas ===== | ||
| Línea 190: | Línea 191: | ||
| < | < | ||
| -- extensión para poder leer archivos en Strings | -- extensión para poder leer archivos en Strings | ||
| - | import IOExts | + | import |
| -- 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 |
| destino = takeWhile (not.esFinLinea) todoMenosFuente | destino = takeWhile (not.esFinLinea) todoMenosFuente | ||
| - | resto = drop 1 (dropWhile (not.esFinLinea) todoMenosFuente) | + | resto = dropWhile esFinLinea |
| esSeparador, | esSeparador, | ||
| - | esSeparador x = x=='|' | + | esSeparador x = elem x "| " |
| - | esFinLinea | + | esFinLinea |
| </ | </ | ||
| Línea 227: | Línea 228: | ||
| Main> take 32 (map fst webGraph) | Main> take 32 (map fst webGraph) | ||
| [" | [" | ||
| - | |||
| - | |||
| Línea 236: | 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 | + | * Determinar cuales y cuantas páginas se apuntan a si mismas. |
| + | * Para los siguientes puntos necesitaremos | ||
| * //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 '' | * //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 '' | ||
| * // | * // | ||
| - | * Ahora queremos saber si un determinado url está en nuestro modelo simplificado y acotado de la web. La función que nos determina si un elemento está o no está en una lista es un acumulador, ya que parte de una lista y nos devuelve un valor (booleano), más en concreto el acumulador //elemento :: a -> [a] -> Bool//. En el preámbulo hay una función que devuelve True si un elemento dado está en una lista, cuál es? Si no la encontramos podemos definirla utilizando '' | + | * Ahora queremos saber si un determinado url está en nuestro modelo simplificado y acotado de la web. La función que nos determina si un elemento está o no está en una lista es un acumulador, ya que parte de una lista y nos devuelve un valor (booleano), más en concreto el acumulador //elemento :: Eq a => a -> [a] -> Bool//. En el preámbulo hay una función que devuelve True si un elemento dado está en una lista, cuál es? Si no la encontramos podemos definirla utilizando '' |
| * ¿Cómo podemos saber cuántas veces ocurre una determinada página? y cómo podemos distinguir entre cuántas veces en todo el archivo, cuántas veces apuntando, cuántas veces apuntada? Definir //cuantas :: Eq a => a -> [a] -> Int//, donde //cuantas x xs// que determina la cantidad de veces que ocurre //x// en //xs//. Utilizar esto junto a // | * ¿Cómo podemos saber cuántas veces ocurre una determinada página? y cómo podemos distinguir entre cuántas veces en todo el archivo, cuántas veces apuntando, cuántas veces apuntada? Definir //cuantas :: Eq a => a -> [a] -> Int//, donde //cuantas x xs// que determina la cantidad de veces que ocurre //x// en //xs//. Utilizar esto junto a // | ||
| * ¿Cómo podemos saber a qué páginas apunta una determinada página? // | * ¿Cómo podemos saber a qué páginas apunta una determinada página? // | ||
introalg/taller07_5.1180487582.txt.gz · Última modificación: (editor externo)
