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
Duda con TP de Lógico
Autor Mensaje
sentey Sin conexión
Presidente del CEIT
fressi renunciessi abandonessi
********

Análisis de Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.579
Agradecimientos dados: 136
Agradecimientos: 207 en 144 posts
Registro en: Aug 2010
Mensaje: #1
Duda con TP de Lógico Trabajo practico y 1 más Paradigmas de Programación
Mande al grupo de PdeP pero no me contestaron aun...asi que pregunto acá.



% Los beneficios son functores:confort(descripcion), confort(descripcion, caracteristica), dispersion(descripcion), economico(descripcion, monto).
gozaBeneficio(carl, confort(sillon)).
gozaBeneficio(lenny, confort(sillon)).
gozaBeneficio(lenny, confort(estacionamiento, techado)).
gozaBeneficio(carl, confort(estacionamiento, libre)).
gozaBeneficio(clark, confort(viajeSinTrafico)).
gozaBeneficio(clark, dispersion(fiestas)).
gozaBeneficio(burns, dispersion(fiestas)).
gozaBeneficio(lenny, economico(descuento, 500)).




Definir el predicado tipoDeBeneficioMasAprovechado/1, permite conocer el tipo de beneficio más aprovechado por los participantes de la logia.
?- tipoDeBeneficioMasAprovechado(Cual)
Cual = confort.


Tengo 2 preguntas:
1- Los beneficios son confort, dispersion, economico y NINGUNO mas? O tengo que asumir que se podrian agregar mas en un futuro?
2- En cualquiera de los 2 casos, alguna idea de como puedo ver cual es el confort que es mas aprovechado, es decir, el que se repite mas veces?

Por las dudas, el TP completo (es un parcial viejo): https://docs.google.com/document/d/1cf4e...=drive_web

Gracias de antemano.

sentey escribió:Voy a cambiar esta firma el día que Me$si gane 2 mundiales
01-07-2013 18:59
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Ivanorr1s Sin conexión
Militante
AutoMagically
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 93
Agradecimientos dados: 21
Agradecimientos: 65 en 31 posts
Registro en: Jan 2012
Mensaje: #2
RE: Duda con TP de Lógico
1) Si, en este momento son esos. Podrías considerar armar algo más genérico, pero no te pueden decir nada si no lo hacés (salvo que la consigna sea hacerlo genérico).

2) Podés armar un predicado que sea verdadero cuando sea X beneficio, por ejemplo:

esDispersion(dispersion(_)).

Y armás una lista con todas las personas que tengan un beneficio (por ejemplo, dispersion) determinado, y despues comparás la cantidad de personas que tiene cada beneficio. Aquel beneficio que tenga más personas es el más aprovechado.

off: por ahí es medio rebuscada, es una solución de tantas otras que pueden diseñarse.
01-07-2013 20:32
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Ivanorr1s recibio 1 Gracias por este post
sentey (01-07-2013)
Anirus Sin conexión
Super Moderador
Sin estado :)
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.163
Agradecimientos dados: 81
Agradecimientos: 232 en 78 posts
Registro en: Nov 2009
Mensaje: #3
RE: Duda con TP de Lógico
No es mejor


beneficio(confort(_),confort).
beneficio(confort(_,_),confort).
beneficio(dispersion(_),dispersion).
beneficio(economico(_,_), economico).

?
01-07-2013 21:15
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Anirus recibio 2 Gracias por este post
sentey (01-07-2013), Nikod11 (02-07-2013)
rm1216 Sin conexión
Campeon del cubo Rubik
ljhglhgñlkj
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 123
Agradecimientos dados: 79
Agradecimientos: 10 en 7 posts
Registro en: Dec 2011
Mensaje: #4
RE: Duda con TP de Lógico
En mi grupo lo hicimos así:

tipoDeBeneficioMasAprovechado(Tipo):- aprovechamientoBeneficio(Tipo, Cantidad),
forall(aprovechamientoBeneficio(_,Cantidad2), Cantidad>=Cantidad2).

aprovechamientoBeneficio(Tipo, Cantidad):- tipoBeneficio(_,Tipo),
findall(Tipo, (gozaBeneficio(_,Beneficio), tipoBeneficio(Beneficio,Tipo)) , Beneficios),
length(Beneficios, Cantidad).

tipoBeneficio(economico(_,_), economico).
tipoBeneficio(confort(_), confort).
tipoBeneficio(confort(_,_), confort).
tipoBeneficio(dispersion(_), dispersion).
01-07-2013 21:40
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] rm1216 recibio 1 Gracias por este post
sentey (01-07-2013)
Ivanorr1s Sin conexión
Militante
AutoMagically
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 93
Agradecimientos dados: 21
Agradecimientos: 65 en 31 posts
Registro en: Jan 2012
Mensaje: #5
RE: Duda con TP de Lógico
De hecho, lo es. Es por eso que decía que podían haber otras soluciones, pasa que estoy con la cabeza en otra cosa jajajaja. En conclusión, es mejor usar el predicado que definió Anirus!
01-07-2013 21:44
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Anirus Sin conexión
Super Moderador
Sin estado :)
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.163
Agradecimientos dados: 81
Agradecimientos: 232 en 78 posts
Registro en: Nov 2009
Mensaje: #6
RE: Duda con TP de Lógico
(01-07-2013 21:40)rm1216 escribió:  En mi grupo lo hicimos así:

tipoDeBeneficioMasAprovechado(Tipo):- aprovechamientoBeneficio(Tipo, Cantidad),
forall(aprovechamientoBeneficio(_,Cantidad2), Cantidad>=Cantidad2).

aprovechamientoBeneficio(Tipo, Cantidad):- tipoBeneficio(_,Tipo),
findall(Tipo, (gozaBeneficio(_,Beneficio), tipoBeneficio(Beneficio,Tipo)) , Beneficios),
length(Beneficios, Cantidad).

tipoBeneficio(economico(_,_), economico).
tipoBeneficio(confort(_), confort).
tipoBeneficio(confort(_,_), confort).
tipoBeneficio(dispersion(_), dispersion).

Off-topic:

No me acordaba que existía length xD
01-07-2013 21:52
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Nikod11 Sin conexión
Secretario General
Sin estado :(
*******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 791
Agradecimientos dados: 85
Agradecimientos: 473 en 57 posts
Registro en: Mar 2011
Mensaje: #7
RE: Duda con TP de Lógico
(01-07-2013 21:15)Anirus escribió:  No es mejor


beneficio(confort(_),confort).
beneficio(confort(_,_),confort).
beneficio(dispersion(_),dispersion).
beneficio(economico(_,_), economico).

?

Existe alguna manera de sacar el nombre del functor por Pattern Matching?Porque si agregamos mas hechos/datos no funcionaria del todo bien...
Intente hacer algo generico para mi TP, pero me salian errores por todos lados. Me quede con:


nombreSistOp(windowsPhone, windowsPhone).
nombreSistOp(nokiaBelle, nokiaBelle).
nombreSistOp((android(_,_)),android).
nombreSistOp((symbian(_)),symbian).
nombreSistOp((iOS(_)),iOS).

02-07-2013 09:43
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Anirus Sin conexión
Super Moderador
Sin estado :)
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.163
Agradecimientos dados: 81
Agradecimientos: 232 en 78 posts
Registro en: Nov 2009
Mensaje: #8
RE: Duda con TP de Lógico
Encontré algo =D
http://eden.rutgers.edu/~zhennany/cs314/handout4.pdf
functor(Functor, Nombre, Aridad)


tipoBeneficio(Beneficio,Tipo):-gozaBeneficio(_,Beneficio),functor(Beneficio,Tipo,_).


(Este mensaje fue modificado por última vez en: 02-07-2013 13:52 por Anirus.)
02-07-2013 13:51
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Anirus recibio 2 Gracias por este post
sentey (02-07-2013), Nikod11 (02-07-2013)
Nikod11 Sin conexión
Secretario General
Sin estado :(
*******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 791
Agradecimientos dados: 85
Agradecimientos: 473 en 57 posts
Registro en: Mar 2011
Mensaje: #9
RE: Duda con TP de Lógico
Que buena onda. Pero si los resolvemos sin usar functor/3 no nos bochan, no?
En mi clase ni en los apuntes vi ese predicado xD
02-07-2013 16:28
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Anirus Sin conexión
Super Moderador
Sin estado :)
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.163
Agradecimientos dados: 81
Agradecimientos: 232 en 78 posts
Registro en: Nov 2009
Mensaje: #10
RE: Duda con TP de Lógico
(02-07-2013 16:28)Nikod11 escribió:  Pero si los resolvemos sin usar functor/3 no nos bochan, no?

No. Salvo que el enunciado dijera que no se puede hacer de la forma en que lo hiciste y que hay que investigar cómo hacerlo genérico. Posiblemente la idea era que fuera de la forma en que lo hiciste para que vean cómo usar pattern matching con functores de distinta aridad.
(Este mensaje fue modificado por última vez en: 02-07-2013 16:45 por Anirus.)
02-07-2013 16:41
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
sentey Sin conexión
Presidente del CEIT
fressi renunciessi abandonessi
********

Análisis de Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.579
Agradecimientos dados: 136
Agradecimientos: 207 en 144 posts
Registro en: Aug 2010
Mensaje: #11
RE: Duda con TP de Lógico
Genial, mil gracias a todos. Quedo joya el 6
Me falta nada mas el punto 4, que es el siguiente. Si alguno tiene tiempo y lo puede ver le agradeceria muchisimo!

4) Definir el predicado masEnvidioso/1, permite conocer los nombres de las personas más envidiosas. (Nota: definirlo sin usar forall/2).



%Mi version con forall:
masEnvidioso(Persona):-
esUnaPersona(Persona), cuantosEnvidia(Persona, Cantidad),
forall((esUnaPersona(Otro), Otro \= Persona, cuantosEnvidia(Otro, OtraCantidad)), Cantidad > OtraCantidad).
cuantosEnvidia(Persona, Cantidad):-
esUnaPersona(Persona), sienteEnvidia(Persona, Lista), length(Lista, Cantidad).



Como veran, me salio, pero no sin el forall. En la lista de mails pusieron esto:

Cita:no es con recursividad.

Acordate de DeMorgan y trata de hacerlo con not =)

decir "Para todo X, se cumple Y" es lo mismo que decir "No existe X que No cumpla Y".

Miralo fijo, pensalo, y despues fijate como podes reemplazar el forall por el not =P

Pero no le puedo encontrar la vuelta.

sentey escribió:Voy a cambiar esta firma el día que Me$si gane 2 mundiales
(Este mensaje fue modificado por última vez en: 02-07-2013 23:13 por sentey.)
02-07-2013 23:11
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Anirus Sin conexión
Super Moderador
Sin estado :)
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.163
Agradecimientos dados: 81
Agradecimientos: 232 en 78 posts
Registro en: Nov 2009
Mensaje: #12
RE: Duda con TP de Lógico
Lo que te dijo es que en vez de meter "Para todos, Persona es más envidiosa" pongas "No existe OtraPersona más envidiosa que Persona".
(Este mensaje fue modificado por última vez en: 03-07-2013 02:36 por Anirus.)
03-07-2013 00:42
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
sentey Sin conexión
Presidente del CEIT
fressi renunciessi abandonessi
********

Análisis de Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.579
Agradecimientos dados: 136
Agradecimientos: 207 en 144 posts
Registro en: Aug 2010
Mensaje: #13
RE: Duda con TP de Lógico
Ahi esta, lo pude sacar. Mil gracias de nuevo!



masEnvidioso(Persona):-
esUnaPersona(Persona), cuantosEnvidia(Persona, Cantidad),
not((esUnaPersona(Persona2), cuantosEnvidia(Persona2, Cantidad2), Cantidad2 > Cantidad)).



sentey escribió:Voy a cambiar esta firma el día que Me$si gane 2 mundiales
(Este mensaje fue modificado por última vez en: 03-07-2013 15:00 por sentey.)
03-07-2013 15:00
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.477
Agradecimientos dados: 230
Agradecimientos: 346 en 207 posts
Registro en: Jun 2008
Mensaje: #14
RE: Duda con TP de Lógico
(02-07-2013 16:41)Anirus escribió:  
(02-07-2013 16:28)Nikod11 escribió:  Pero si los resolvemos sin usar functor/3 no nos bochan, no?

No. Salvo que el enunciado dijera que no se puede hacer de la forma en que lo hiciste y que hay que investigar cómo hacerlo genérico. Posiblemente la idea era que fuera de la forma en que lo hiciste para que vean cómo usar pattern matching con functores de distinta aridad.

Ojo, no estoy seguro de que te acepten usar functor/3, eh. Tratá de no usarlo, o consultalo con tu ayudante si es que es para el TP (o con algún docente que ande por ahí si pensás usarlo en un final/parcial), porque, justamente por ser algo que no se ve en la cursada, tal vez querían evaluar cómo usabas alguna otra herramienta y con esto medio que no estás demostrando saber usar eso otro.


Consulte a su médico =)

[Imagen: a2.php]
[Imagen: 971aa6599664453c05cb3e42d58bbc0eo.jpg]
03-07-2013 18:03
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Nikod11 Sin conexión
Secretario General
Sin estado :(
*******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 791
Agradecimientos dados: 85
Agradecimientos: 473 en 57 posts
Registro en: Mar 2011
Mensaje: #15
RE: Duda con TP de Lógico
Claro, obviamente que voy a usar lo que se de en la materia.

Sentey, para mi TP tenia que hacer algo parecido a "MasEnvidioso" y no me salia. Gracias por postear tu solucion!
04-07-2013 11:09
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




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