UTNianos

Versión completa: [Aporte] Final Paradigmas de Programacion 13/02/2016
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Buenos días,

Subo el final de PDP del 13/02/2016.
Si alguno quiero resolverlo, bienvenido sea!

Saludos
Comparto las respuestas de la parte C.

1. ?- cuantos(Persona, Cant).

a) cuantos(Persona, C):- findall( A, hace(Persona, A), Lista), Length(Lista, C).
Cant=5.
Porque la variable Persona entra al findall sin ligar. Es parcialmente Inversible ya que me deja consultar la Cantidad como incognita.

b) cuantos(Persona, C):- artesano(Persona,_,_), findall( A, hace(Persona, A), Lista), Length(Lista, C).
Persona = carlos, Cant = 2 ;
Persona = maria, Cant = 1 ;
Persona = elsa, Cant = 2.
Porque Persona entra al findall ligada por la regla artesano, el predicado es totalmente inversible, me deja consultar ambas variables.

c) cuantos(Persona,C):- artesano(Persona,_,_), artesania(A,_), findall( A, hace(Persona, A), Lista), Length(Lista, C).
Persona = carlos, Cant = 1 ;
Persona = carlos, Cant = 1 ;
Persona = carlos, Cant = 0 ;
Persona = carlos, Cant = 0 ;
Persona = maria, Cant = 1 ;
Persona = maria, Cant = 0 ;
Persona = maria, Cant = 0 ;
Persona = maria, Cant = 0 ;
Persona = elsa, Cant = 0 ;
Persona = elsa, Cant = 0 ;
Persona = elsa, Cant = 1 ;
Persona = elsa, Cant = 1.
(... en este necesite ayuda del swi-prolog, pero puedo explicar su comportamiento)
Al entrar Persona y A ligadas en el findall, solo se comprueba si existe tal relacion. Osea en el findall entran las combinaciones entre los artesanos(carlos,maria y elsa) con las artesanias(ceramicas,plateria,tejido y estampado). Siempre la cantidad sera entre 0 o 1.
El predicado es totalmente inversible.

2.
malUbicado(Persona):- artesano(Persona, Lugar, _),
forall( (hace(Persona,Producto), artesania(Producto,Material)), not(hayMaterial(Lugar, Material))).


La mayoria lo comprobe con el software de prolog.
Si le pifie avisen pls.
Buenas! como va?

Tengo mis dudas para la justificación, pero les paso lo que hice para el primer punto..

Parte A
-----------
1) Todas funcionan correctamente. El tema de cual es mejor o peor creo que va por como lo ve cada uno.. por ejemplo, para mi cantidadTotal5 es mejor que el resto por ser mas expresiva (porque veo que tiene nombres claros, que me dicen que hace cada cosa..) pero a la vez es menos declarativa, ya que veo los pasos para resolver el total. Por otro lado, cantidadTotal4 es la peor con respecto a los demás por el hecho que es menos expresivo (uno tiene que saber que es foldl, por ejemplo) y menos declarativo.. pero creo que va en uno. No se muy bien como justificarlo..

2) No termina nunca. Hay que darse cuenta que lo que se está proponiendo es una lista infinita. Haskell intenta resolver la funcion por medio del concepto de lazy evaluation, pero no puede terminar de concluir cuando quiere sumar todos los valores de una lista infinita.

3) funcionMagica peso = filter ((<peso).snd)


Alguien hizo la parte B?? (creo que fue bastante jodido este final.. muy conceptual..)

Saludos!
en el 1 de la parte A, la segunda funcion no anda, le falta el '/' delante de la funcion lambda
Bueno, debe ser un error de impresion.. porque no creo que eso te lo tomen como que no funciona..
Alguien rindio este final y pudo aclarar lo del '/' ??
Perdón por la insistencia pero.. alguien hizo la parte de objetos de este final??
Dejo un link del grupo de yahoo de pdep donde aparece parte de la corrección.

https://groups.yahoo.com/neo/groups/pdep...?reverse=1

Saludos!
(23-02-2016 21:46)gabrielarce escribió: [ -> ]Bueno, debe ser un error de impresion.. porque no creo que eso te lo tomen como que no funciona..
Alguien rindio este final y pudo aclarar lo del '/' ??
a ese lo tenia bien, aunque creo igual q vos q era un error de imprecion.

respecto a la parte C el 1c, el predicado no es totamente inversible, segun la wiki.
"La inversibilidad no tiene que ver solamente con que "dé error", muchas veces lo que pasa es -que sin dar error- se comporta incorrectamente o de forma distinta a la que uno espera, en ese caso también decimos que no es inversible."
les dejo el link por si acaso
URLs de referencia