UTNianos

Versión completa: Pedido De TP LOGICO DE PARADIGMAS "TEG"
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Buenos Dias utnianos, espero que hayan disfrutado de las vacaciones.

Quisiera pedirles por favor si alguno tiene el TP de TEG, del paradigma logico si podria pasarmelo, estoy practicando y hay ciertos puntos que no me salen.

Me ayudaria mucho para saber el porque no me ejecuta como deberia.

Muchisimas gracias.
Que punto tenes problema?
Buenas, en estos puntos, la verdad no se bien si estoy usando el forall, por las dudas pongo mi resolucion, la cual no funciona como deberia...




estaPeleado/1 que se cumple para los continentes en los cuales todos los jugadores que siguen en juego ocupan algún país. Un jugador ya no está en juego si no ocupa ningún país.
4. ocupaContinente/2 que relaciona un jugador y un continente si el jugador ocupa todos los países del mismo.
5. seAtrinchero/1 que se cumple para los jugadores que ocupan países en un único continente.


estaPeleado(Continente):-
paisContinente(Continente,Pais),
forall(jugador(Jugador),(paisesQueOcupa(Jugador,Lista), member(Pais,Lista))).

ocupaContinente(Jugador,Continente):-

forall(paisContinente(Continente,Pais),(paisesQueOcupa(Jugador,Lista) ,member(Pais,Lista))).

listaDePaisesDel(Continente,Lista):-findall(Pais,paisContinente(Continente,Pais),Lista).

seAtrinchero(Jugador):-
paisesQueOcupa(Jugador,Lista),
paisContinente(Continente,_),
listaDePaisesDel(Continente,ListaPaisesC),
forall(member(X,Lista),member(X,ListaPaisesC)).
si esta mal, pero es por como pasas los predicados en el forall ya que muchas de las cosas que estan dentro del forall ya las tenes echas previamente estas reescribiendo codigo al cuete. y te complicaste mucho haciendo todo el manejo de comprobación mediante listas.

Recorda que el forall es de la siguiente forma forall(predicado1,predicado2) o bien si tenes que utilizar mas de un predicado seria forall((predicado1,predicado2),(predicado3,predicado4, predicado5)) en este último tenes que revisar muy bien la lógica ya que sino puede dar resultados muy distintos.

este es el enunciado del estaPeleado
[/*3) estaPeleado/1 que se cumple para los continentes en los cuales todos los jugadores que siguen en juego ocupan algún país. Un jugador ya no está en juego si no ocupa ningún país.*/]

El predicado paisContinente(Continente,Pais) no va eso no te hace inversible el estaPeleado(Continente), para eso usas continente(Continente).

Luego dentro de tu forall estas diciendo basicamente que "para todo jugador que ocupa una lista de paises el pais es parte de esa lista de paises", en realidad tu forall tiene que decir "para todo jugador que esta en juego ocupa algun pais del contienente".
Ahora tenes que hacer predicados donde puedas determinar si un jugador sigue en juego y si ocupa algun pais del contienente.

[/*4)ocupaContinente/2 que relaciona un jugador y un continente si el jugador ocupa todos los países del mismo.*/]
Aca no estas unificando antes de entrar al forall, es decir, te falta un jugador y un continente para que sea inversible y puedas trabajar luego dentro del forall.
Después tu forall dice "para todo pais de un continente se tiene una lista de paises de un jugador donde el pais es parte de esa lista"
Lo que tenes que hacer en realidad es para todo pais del continente el jugador lo ocupa.

[/*5. seAtrinchero/1 que se cumple para los jugadores que ocupan países en un único continente.*/]
Aca te la complicaste en serio con lo de las listas ya que tenes que verificar que los elementos de una listas pertenecen a otra.
Era bastante simple dado un jugador que esta en juego y un continente se da que para todo pais del continente el jugador lo ocupa.

En general se te hizo mas complicado por tratar de juntar todo en una lista y lo mas simple era verificar los datos de la base de conocimiento. Cualquier cosa pregunta.wave
Hola, en mi curso lo resolvimos en clase para practicar, te paso la resolución subida por la profe. Saludos.
URLs de referencia