Donar $20 Donar $50 Donar $100 Donar mensualmente
 


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Duda Prolog
Autor Mensaje
c'thun Sin conexión
Militante
Sin estado :(
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 95
Agradecimientos dados: 80
Agradecimientos: 3 en 3 posts
Registro en: Mar 2013
Mensaje: #1
Duda Prolog Dudas y recomendaciones Paradigmas de Programación
Necesito comprar 2 predicados, por ej:

gripe(dolor_de_cabeza).
gripe(tos).
gripe(congestion_nasal).

juan(dolor_de_cabeza).
juan(tos).
juan(congestion_nasal).
juan(cansancio).

Cómo haría un predicado que compare el paciente y la enfermedad y si tiene por lo menos 2 argumentos en común me devuelva True o False, ya probe de mucha formas pero la verdad estoy bastante perdido con este lenguaje, muchas gracias.
(Este mensaje fue modificado por última vez en: 20-06-2014 14:03 por c'thun.)
20-06-2014 04:05
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Diego Pedro Sin conexión
Secretario de la SAE
que calor no?
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 631
Agradecimientos dados: 23
Agradecimientos: 105 en 48 posts
Registro en: May 2011
Mensaje: #2
RE: Duda Prolog
Me parece si pudieras hacer más clara tu duda estaría bueno, porque si es buscar algo en común entre ambos predicados podrías hacer:

tieneEnfermedad(Enfermedad) :- enfermedad(Enfermedad),juan(Enfermedad).

Ahora si esto no es lo que buscas realmente no te entiendo.

Saludos
20-06-2014 12:20
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Desert69 Sin conexión
Presidente del CEIT
Sin estado :( / "Anarquia...
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 2.403
Agradecimientos dados: 205
Agradecimientos: 298 en 186 posts
Registro en: Jun 2008
Mensaje: #3
RE: Duda Prolog
Kaiko, pensá en el problema que tenés que resolver, no en cómo implementarlo.

"Un predicado que compare el paciente y la enfermedad y si tiene por lo menos 3 argumentos en común me devuelva True o False" suena a implementación. ¿Qué estás queriendo resolver?

[Imagen: a2.php]
[Imagen: 971aa6599664453c05cb3e42d58bbc0eo.jpg]
20-06-2014 13:01
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
c'thun Sin conexión
Militante
Sin estado :(
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 95
Agradecimientos dados: 80
Agradecimientos: 3 en 3 posts
Registro en: Mar 2013
Mensaje: #4
RE: Duda Prolog
(20-06-2014 12:20)Diego Pedro escribió:  Me parece si pudieras hacer más clara tu duda estaría bueno, porque si es buscar algo en común entre ambos predicados podrías hacer:

tieneEnfermedad(Enfermedad) :- enfermedad(Enfermedad),juan(Enfermedad).

Ahora si esto no es lo que buscas realmente no te entiendo.

Saludos

mmm algo parecido la idea seria estaEnfermo(nombre,enfermedad) y que compare si tienen en comun hasta ahi todo bien, pero como hago que si tiene minimo en comun 2 de true y sino false? wall
gracias.

(20-06-2014 13:01)Desert69 escribió:  Kaiko, pensá en el problema que tenés que resolver, no en cómo implementarlo.

"Un predicado que compare el paciente y la enfermedad y si tiene por lo menos 3 argumentos en común me devuelva True o False" suena a implementación. ¿Qué estás queriendo resolver?

te dejo una parte del enunciado capaz no fue my claro =P

Definir el predicado enfermoDe/2, que relaciona una persona con una enfermedad, una persona se enferma de dicha enfermedad si tiene al menos 2 síntomas de dicha enfermedad.
(Este mensaje fue modificado por última vez en: 20-06-2014 14:03 por c'thun.)
20-06-2014 13:59
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Diego Pedro Sin conexión
Secretario de la SAE
que calor no?
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 631
Agradecimientos dados: 23
Agradecimientos: 105 en 48 posts
Registro en: May 2011
Mensaje: #5
RE: Duda Prolog
Esta bien ahí te entendí un toque mas. Lo primero que estás viendo mal es el argumento Nombre, si vos lo tenés planteado como lo escribiste, es decir juan(tos), entonces juan es un predicado, deberías tener algo así:

paciente(juan,tos)

Esto te relacionaría las dos cosas,de la forma en que vos lo pones en el primer post, es imposible ya que tu nombre no esta dado ni por un functor ni por argumento sino que es un predicado más, y después pensa de que forma podes agrupar esos datos, y sacar la cantidad (una pista, estaría muy bueno que uses orden superior).

A ver si con eso sale.

Saludos.

PD: Otra forma sin usar orden superior, sería fijandote si tiene dos sintomas distintos y con eso bastaría. Lo digo porque a veces se pueden hacer cosas sin recurrir al orden superior, digamos en este caso quizá sería usar una bazooka para matar una mosca
(Este mensaje fue modificado por última vez en: 20-06-2014 14:19 por Diego Pedro.)
20-06-2014 14:05
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Diego Pedro recibio 2 Gracias por este post
c'thun (20-06-2014), Desert69 (20-06-2014)
Desert69 Sin conexión
Presidente del CEIT
Sin estado :( / "Anarquia...
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 2.403
Agradecimientos dados: 205
Agradecimientos: 298 en 186 posts
Registro en: Jun 2008
Mensaje: #6
RE: Duda Prolog
(20-06-2014 14:05)Diego Pedro escribió:  PD: Otra forma sin usar orden superior, sería fijandote si tiene dos sintomas distintos y con eso bastaría. Lo digo porque a veces se pueden hacer cosas sin recurrir al orden superior, digamos en este caso quizá sería usar una bazooka para matar una mosca

That.

[Imagen: a2.php]
[Imagen: 971aa6599664453c05cb3e42d58bbc0eo.jpg]
20-06-2014 14:29
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
c'thun Sin conexión
Militante
Sin estado :(
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 95
Agradecimientos dados: 80
Agradecimientos: 3 en 3 posts
Registro en: Mar 2013
Mensaje: #7
RE: Duda Prolog
Al final me salio con un findall, creo que funciona bien.


estaEnfermoDe(Nombre,Enfermedad):- findall(Sintomas,(paciente(Nombre,Sintomas), sintomas(Enfermedad,Sintomas)),A), length(A,Z), Z>=2.


gracias a ambos por responder.
(Este mensaje fue modificado por última vez en: 20-06-2014 17:11 por c'thun.)
20-06-2014 17:10
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Diego Pedro Sin conexión
Secretario de la SAE
que calor no?
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 631
Agradecimientos dados: 23
Agradecimientos: 105 en 48 posts
Registro en: May 2011
Mensaje: #8
RE: Duda Prolog
Si con un findall sale, pero era justamente lo que hablaba de matar una mosca con una bazooka =P
20-06-2014 19:37
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
sacros Sin conexión
Profesor del Modulo A
<img src=x onerror="al...
*****

Otra
Facultad Regional Buenos Aires

Mensajes: 242
Agradecimientos dados: 91
Agradecimientos: 65 en 25 posts
Registro en: Nov 2010
Mensaje: #9
RE: Duda Prolog
pasa que vos querias saber si un tipo tenia una enfermedad: true o false

ahora estas trayendo una lista de enfermedades para el tipo, son cosas distintas (no esta mal)
20-06-2014 20:25
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Desert69 Sin conexión
Presidente del CEIT
Sin estado :( / "Anarquia...
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 2.403
Agradecimientos dados: 205
Agradecimientos: 298 en 186 posts
Registro en: Jun 2008
Mensaje: #10
RE: Duda Prolog
No, fijate que obtiene la lista pero busca su longitud. Nunca expone la lista hacia afuera del predicado.


Kaiko, ¿te animás a probar sin usar el findall?

[Imagen: a2.php]
[Imagen: 971aa6599664453c05cb3e42d58bbc0eo.jpg]
21-06-2014 05:07
Visita su sitio web 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)



    This forum uses Lukasz Tkacz MyBB addons.