UTNianos

Versión completa: Ayuda TP Recursividad
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Buenas noches gente. Tengo una duda con un punto de un TP...

Cita:5) Dada una persona y un conjunto de atracciones,
conocer cómo queda la persona luego de pasar por todas
las atracciones. Tener en cuenta que luego de cada
atracción la persona se toma un refresco. (No usar
recursividad!)


type Persona = (Nombre, Orientacion, Emocion, Cultura)
type Nombre = String
type Orientacion = Int
type Emocion = Int
type Cultura = Int

type Atraccion = Persona -> Persona

comoQuedaPersona :: Persona -> [Atraccion] -> Persona
comoQuedaPersona persona atracciones = foldl (\p f -> f(p)) persona atracciones


Si uso foldl me funciona pero internamente usa recursividad...
Descomponiendo la lista usaria recursividad tambien...
Pense en un map o lista por comprension, pero me daria como resultado una lista de personas (igual a la cantidad de funciones-atracciones)

Me estoy volviendo loco, no le veo el otro lado de la moneda
Creo recordar de cuando cursaba paradigmas que la aclaración ("no usar recursividad") era que no la uses vos. Después si lo que usas es recursivo adentro no te importa (la gracia es que no lo sabés ni te interesa saberlo, te abstraes).
Claro, pasa que el foldl lo vimos como tema de Recursividad y tenia las dudas por eso =P
Lo voy a mandar así, de ultima después lo corrijo.
Gracias!
Como dice Rodrigo, foldl en su implementación es cierto que usa recursividad, pero lo importante es que vos no implementes la función de forma recursiva.
sumo, cuando usás foldl (sin importar que foldl de por sí sea recursiva), para los profesores estás aplicando "orden superior" ;) )

Slds!
es que cuando usás fold estás aplicando orden superior y no recursividad =D

Recursividad es cuando vos definís el caso base y el paso recursivo.
Al final estaba bien usar el foldl jajaja tanto drama me hice al pedo.
una pregunta aparte pero del MISMO tp!!

me corrijeron el 1er punto del tp diciéndome que debo de resolverlo haciendo uso de fold y no me parece que salga porque mirando su prototipo puedo ver que devuelve un UNICO elemento. Es decir, ese valor inicial ó acumulador que se le suele decir. Y el punto pide una lista de atracciones!!! Confused


foldl :: (a -> b -> a) -> a -> [b] -> a


mi resolucion del punto 1 que no viene mucho al caso pero que FUNCIONA, la dejo a continuacion:


atracciones lisParques = (concat.map snd) lisParques


a ver si alguien sabe como sacarlo !! wall
Como usas el fold para sumar los elmentos de la lista, tambien podes usar un fold para concatenar

El valor inicial seria [] , la lista y la funcion concatenar! se entiende?
Que raro, yo lo resolvi con listas por comprension...


atracciones parques = concat [snd list | list <- parques]

Nikod11, me parece que te está faltando que tome el refresco después de cada atracción
(15-05-2013 00:13)acuadro escribió: [ -> ]Nikod11, me parece que te está faltando que tome el refresco después de cada atracción

Sisi, lo agregue despues =P
URLs de referencia