Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Ayuda Logico mumuki - Ejercicio 8: TEG 2
Autor Mensaje
Manutuero Sin conexión
Empleado de Fotocopiadora
:p
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 39
Agradecimientos dados: 15
Agradecimientos: 1 en 1 posts
Registro en: Feb 2013
Facebook
Mensaje: #1
Ayuda Logico mumuki - Ejercicio 8: TEG 2 Ejercicios Paradigmas de Programación
Buenas! Alguno me podría ayudar con este ejercicio ?

https://mumuki.io/exercises/2537-programacion-logica-practica-negacion-y-cuantificacion-teg-2

Mi solución fue esta, pero me sigue fallando creo que en "estaPeleado":

ocupaContinente(Jugador,Continente):-
forall(ocupa(Pais,Jugador,_),estaEn(Pais,Continente)).

estaPeleado(Continente):-
forall(estaEn(Pais,Continente),ocupa(Pais,Jugador,_)).

seAtrinchero(Jugador):-
ocupa(Pais,Jugador,_),
estaEn(_,Pais).



ADJUNTO TAMBIÉN EL ENUNCIADO:
Agregamos más información a nuestra base de conocimientos que nos dice en qué continente se encuentra cada país mediante el predicado estaEn/2 que relaciona un continente y un país.

Con esta nueva información definí los siguientes predicados:

ocupaContinente/2 que relaciona un jugador y un continente si el jugador ocupa todos los países del mismo.
estaPeleado/1 que se cumple para los continentes en los cuales todos los jugadores ocupan algún país.
seAtrinchero/1 que se cumple para los jugadores que ocupan países en un único continente.

Asumí que ocupa/3 que relaciona un país con un jugador ya se encuentra definido también.
21-07-2017 10:49
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
nicolassierra Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 21
Agradecimientos dados: 5
Agradecimientos: 4 en 4 posts
Registro en: Dec 2011
Mensaje: #2
RE: Ayuda Logico mumuki - Ejercicio 8: TEG 2
Se me ocurrio de esta manera , fíjate q estas poniendo mal los parámetros , estaEn relaciona continente y pais(pusiste al revez)

seAtrinchero(Jugador):- estaEn(Continente,_),forall(ocupa(Pais,Jugador,_),estaEn(Continente,Pais)).

ocupaContinente(Jugador,Continente):-
forall(estaEn(Continente,Pais),ocupa(Pais,Jugador,_)).

/* Tendria q ser algo asi , pero me cuesta sacarlo sin la base de conocimiento*/

estaPeleado(Continente):-
estaEn(Continente,_),forall(estaEn(Continente,Pais),ocupa(Pais,_,_)).
21-07-2017 12:22
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Manutuero Sin conexión
Empleado de Fotocopiadora
:p
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 39
Agradecimientos dados: 15
Agradecimientos: 1 en 1 posts
Registro en: Feb 2013
Facebook
Mensaje: #3
RE: Ayuda Logico mumuki - Ejercicio 8: TEG 2
Por lo que vi de los datos que te dan esta seria la base:

ocupa(argentina, magenta, 5).
ocupa(chile, negro, 3).
ocupa(brasil, amarillo, 8).
ocupa(uruguay, magenta, 5).
ocupa(alaska, amarillo, 7).
ocupa(yukon, amarillo, 1).
ocupa(canada, amarillo, 10).
ocupa(oregon, amarillo, 5).
ocupa(kamtchatka, negro, 6).
ocupa(china, amarillo, 2).
ocupa(siberia, amarillo, 5).
ocupa(japon, amarillo, 7).
ocupa(australia, negro, 8).
ocupa(sumatra, negro, 3).
ocupa(java, negro, 4).
ocupa(borneo, negro, 1).

estaEn(americaDelSur, argentina).
estaEn(americaDelSur, brasil).
estaEn(americaDelSur, chile).
estaEn(americaDelSur, uruguay).
estaEn(americaDelNorte, alaska).
estaEn(americaDelNorte, yukon).
estaEn(americaDelNorte, canada).
estaEn(americaDelNorte, oregon).
estaEn(asia, kamtchatka).
estaEn(asia, china).
estaEn(asia, siberia).
estaEn(asia, japon).
estaEn(oceania,australia).
estaEn(oceania,sumatra).
estaEn(oceania,java).
estaEn(oceania,borneo).

Acabo de probar con tu solución pero también rompe jeje.
21-07-2017 12:45
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Villa30 Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 6
Agradecimientos dados: 0
Agradecimientos: 0 en 0 posts
Registro en: Feb 2009
Mensaje: #4
RE: Ayuda Logico mumuki - Ejercicio 8: TEG 2
La solucion que dio nicolassierra esta perfecto para los predicados ocupaContinente y seAtrinchero. El predicado estaPelado, se deberia definir de esta forma:

estaPeleado(Continente):-
forall(ocupa(_,Jugador,_),(ocupa(Pais,Jugador,_),estaEn(Continente,Pais))).

Fijate modificando eso que deberia funcionar.
21-07-2017 16:12
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Manutuero Sin conexión
Empleado de Fotocopiadora
:p
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 39
Agradecimientos dados: 15
Agradecimientos: 1 en 1 posts
Registro en: Feb 2013
Facebook
Mensaje: #5
RE: Ayuda Logico mumuki - Ejercicio 8: TEG 2
Tuve que investigar un poco como funcionaba el motor de prolog (ya que la curse hace 2 años jeje) pero me sirvió tu ayuda Nico, la solución me quedo así:

% para TODO pais de ese continente, se cumple que es ocupado por el mismo jugador
ocupaContinente(Jugador,Continente):-
forall(estaEn(Continente,Pais),ocupa(Pais,Jugador,_)).

% para TODOS los jugadores, se cumple que cada jugador ocupa un pais que esta en ese continente
estaPeleado(Continente) :- forall(ocupa(_,Jugador,_),(ocupa(Pais,Jugador,_),estaEn(Continente,Pais))).

% para todos los paises que ocupa UN jugador, se cumple que estan en el MISMO continente
seAtrinchero(Jugador) :-
estaEn(Continente,_), % generamos (unificamos el valor de Continente)
forall(ocupa(Pais,Jugador,_),estaEn(Continente,Pais)).
21-07-2017 16:17
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)