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/30 01:13] – Un : de más nicolasw | introalg:taller07_5 [2018/08/10 03:03] (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: 2018/08/10 03:03 (editor externo)