UTNianos

Versión completa: Parcial 18/12/2010 - Organizacion de Fiestas - Ayuda
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola, estoy haciendo este parcial: http://pdep.com.ar/material/parciales/Re...edirects=0

No se qué onda, tengo un problema con Prolog, no me sale inversible el 1er ejercicio ja.

O sea, no entiendo, si yo hago esto:

estaSentadaEn(Quien,mesa(Mesa,Comensales)) :- mesaArmada(_,mesa(Mesa,Comensales)), member(Comensales,Quien).



La base de conocimiento ya incluye todas las listas de comensales correctas posibles, por ende tendria que ser inversible, pero el SWI me tira una combinatoria infinita, lo cual no tiene sentido, porque no se podrían inferir como verdaderos con la base de conocimiento que yo le proporciono al programa.

¿Alguien me ilumina? =P
No te es inversible porque no te viene ligado el Quien, entonces vos al pasar ambos parametros como variables te va a dar False, porque al pasar como Variable las Personas, no hay un preciado que te devuelva todas la combinaciones posibles.

Una posible solución sería:


estaSentadoEn(Quien,mesa(Nro,Lista)):-
esPersona(Quien),
mesaArmada(_,mesa(Nro,Lista)),
member(Quien,Lista).

esPersona(Quien):-
mesaArmada(_,mesa(_,Lista)),
member(Quien,Lista).




Prueba:
3 ?- estaSentadoEn(X,Y).
X = juan,
Y = mesa(1, [juan, mirta, ana, nestor]) ;
X = mirta,
Y = mesa(1, [juan, mirta, ana, nestor]) ;
X = ana,
Y = mesa(1, [juan, mirta, ana, nestor]) ;
X = nestor,
Y = mesa(1, [juan, mirta, ana, nestor]) ;
Puede ser que no sea ese el parcial?
No dije nada
Me da lo mismo con tu resolucion, no tienen sentido esas respuestas.


[Imagen: 127012dcc7a157973a5f8ed3f5253c45538b905c.png]

¿Por qué flashea listas que no están en la base de conocimiento? Encima me flashea lista de listas, dafuq.
Odio este paradigma


Edit: Recien veo tu edit ¿Por qué a mi me dio así tan wadafuq?
Fijate que en tu Predicado estas aplicando mal el member, es member(PersonaAbuscar,Lista) y lo estas aplicando al reves. Fijate si eso soluciona el problema
JAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJ por dios soy un descanso, era por eso el error xD

Y mi resolución al final estaba bien, "Quien" unifica perfectamente sin el esPersona, como me parecia que tenia que ser. Eso me pasa por anotarme en el resumen que me hice que era member(Lista,Elem) =P
Suele pasar en este paradigma, que por cosas tontas no te ande nada.
Gentessssss... Además de seguir recomendando que tiren las dudas a la lista de PdeP (nunca voy a dejar de hacerlo, muejeje =)), consejo de amiga: hacete una lobotomía o hipnosis, y "hacete uno" con cada paradigma. Olvidate de que existen otras cosas y que las conocés. Convencete de que *ESA* es la forma. Mentite un rato, hasta entenderlo. Y ahí ya vas a dejar de necesitar la mentira.

Mientras que te surja la frase "este paradigma", seguramente estés in the oven =)


Abrazo de gol!
URLs de referencia