UTNianos

Versión completa: [CONSULTA] Ejercicio de parcial PDP
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Como les va? Estaba haciendo el parcial de NigthClub que esta en la pagina para practicar para el parcial de paradigma funcional que tengo el lunes y el primer ejercicio decía:

Obtener los datos de una persona a partir de su nombre
>datosDe "german"
("german",40000,200000,[("Grog XD",25),("Cerveza",1)])

Ademas contábamos con la función
find criterio = head . filter criterio

Yo lo resolví pasandole el criterio como función lambda. Quería saber si a eso apuntaba la consigna o si habría que hacerlo de otra forma.

Eric!
No se el contexto del ejercicio pero esta perfecto lo que hiciste =P

Acordate que puede ser una expresion lambda asi como una funcion "normal".
yo tenia una duda con el parcial de carrera de chocobos.. siempre que armo una funcion nueva me tira error de tipo de dato cuando la ejecuto. esto es lo que tengo hasta el punto 5 y no puedo ejecutar ninguna funcion:
--1--
mayorSegun f a b = ((f a) > (f b))
menorSegun f a b = not (mayorSegun f a b)
--2--
tiempo tramo chocobo = (distancia tramo) div (velCorregida tramo chocobo)
distancia (d,_) = d
velCorregida (_,vc) chocobo = vc chocobo
tiempoTotal carrera chocobo = map (tiempo chocobo) carrera
--3--
podio carrera jinetes = take 3 (quickSort (<)(map (tiempoTotal carrera) jinetes))
--4--
elMejorDelTramo tramo jinetes = take 1 (quickSort (<) (map (tiempo tramo) jinetes))
elMasWinner carrera jinetes = elMejor (map (elMejorDelTramo carrera) jinetes)
elMejor (x:xs) = filter (mayorSegun length x) xs
--5--
quienesPueden tramo tiempomax jinetes = [lista | lista <- jinetes, (tiempomax == (tiempo tramo))]

alguno sabe porque me salta el error?
Te falta la definicion de la funcion quickSort, copiala de la consigna y fijate si es eso.

Volviendo al tp del NigthClub, tengo una pregunta con el 3)b) en base a un criterio (que no puede ser lambda ni funciones auxiliares) y dos personas devuelve "el mejor"

>quienEsMejor aguante "flor" "german"
"german" (porque tiene más nivel de aguante, 200.000 > 15 de flor)

ii. El que tomó más vasos (ej: Mati tomó 2 vasos, Flor tomó sólo 1, no importa la bebida, hay que sumar los vasos)

quienEsMejor la defini como:
quienEsMejor criterio nombre1 nombre2 | criterio nombre1 > criterio nombre2 = nombre1
| otherwise = nombre2

pero no se como llamarla a esa funcion
la copie, no lo puse aca porque estaba en la consigna, ya en el primero no me deja comparar las carreras porque me difieren los tipos de datos
Si, a mi no me anda, y la resolucion que esta puesta en la pagina tampoco. Asi que ni idea

Eric!
(15-05-2013 13:53)ericlifs escribió: [ -> ]Si, a mi no me anda, y la resolucion que esta puesta en la pagina tampoco. Asi que ni idea

Eric!

donde estan las respuestas?
pongan que es lo que ejecutan y cual es el error. No tengo nada aca para probar el paradigma funcional, pero leyendo el error podria ayudar.

quickSort es una funcion existente, que no hace falta definir.

Paso una pagina que a mi me ayudo mucho:
Aprende haskell por el bien de todos:
http://aprendehaskell.es/
(15-05-2013 14:49)rod77 escribió: [ -> ]pongan que es lo que ejecutan y cual es el error. No tengo nada aca para probar el paradigma funcional, pero leyendo el error podria ayudar.

quickSort es una funcion existente, que no hace falta definir.

Paso una pagina que a mi me ayudo mucho:
Aprende haskell por el bien de todos:
http://aprendehaskell.es/

aca pongo todo mi programa, del punto 1 al 5:
bosqueTenebroso = [(100, f1), (50, f2), (120, f2), (200, f1), (80, f3)]
pantanoDelDestino = [(40, f2), (90, (\(f,p,v)-> f + p + v)), (120, fuerza), (20, fuerza)]
f1 chocobo = velocidad chocobo * 2
f2 chocobo = velocidad chocobo + fuerza chocobo
f3 chocobo = velocidad chocobo / peso chocobo
amarillo = (5, 3, 3)
negro = (4, 4, 4)
blanco = (2, 3, 6)
rojo = (3, 3, 4)
fuerza (f,_,_) = f
peso (_,p,_) = p
velocidad (_,_,v) = v
apocalipsis = [("Leo", amarillo), ("Gise", blanco), ("Mati", negro), ("Alf",rojo), ("Gise", blanco), ("Gise", blanco), ("Leo", amarillo)]
quickSort _ [] = []
quickSort criterio (x:xs) = (quickSort criterio . filter (not . criterio x)) xs ++ [x] ++ (quickSort criterio . filter (criterio x)) xs
--1--
mayorSegun f a b = ((f a) > (f b))
menorSegun f a b = not (mayorSegun f a b)
--2--
tiempo tramo chocobo = (distancia tramo) div (velCorregida tramo chocobo)
distancia (d,_) = d
velCorregida (_,f) chocobo = f chocobo
tiempoTotal carrera chocobo = map (tiempo chocobo) carrera
--3--
podio carrera jinetes = take 3 (quickSort (<)(map (tiempoTotal carrera) jinetes))
--4--
elMejorDelTramo tramo jinetes = take 1 (quickSort (<) (map (tiempo tramo) jinetes))
elMasWinner carrera jinetes = elMejor (map (elMejorDelTramo carrera) jinetes)
elMejor (x:xs) = filter (mayorSegun length x) xs
--5--
quienesPueden tramo tiempomax jinetes = [lista | lista <- jinetes, (tiempomax == (tiempo tramo))]

el error que salta es "couldnt match expected type" es que el bosqueTenebroso es [(integer,(double,double,double) -> double)] y el pantanoDelDestino [(integer,(integer,integer,integer) -> integer)], pero asi es como te lo dan desde un principio, no se donde me estoy equivocando...
URLs de referencia