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 Lógico TP
Autor Mensaje
Tenshi Sin conexión
Empleado del buffet
-
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 8
Agradecimientos dados: 46
Agradecimientos: 0 en 0 posts
Registro en: Nov 2014
Mensaje: #1
Ayuda Lógico TP Trabajo practico Paradigmas de Programación
Hola! Necesitaría una mano con esto:

bebida(frappuccinoFrutilla,[base(helado,80),jarabe(frutilla),jarabe(dulceDeLeche),leche(2,60)]).

me pide que arme una regla, tal que las calorias del jarabe sean 10.
Yo armé esto:
caloriasJarabe(Bebida,C1):-
C1 is 10,
bebida(Bebida,Lista),
member(jarabe(_),Lista).

el tema es que cuando lo consulto me devuelve esto:
33 ?- caloriasJarabe(frappuccinoFrutilla,X).
X = 10 ;
X = 10 .

y lo que quiero es que me devuelva X=20.

Muchas gracias! Creo que hay que usar recursividad pero no tengo idea como armarlo.
19-04-2015 18:20
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
alexis caspell Sin conexión
Militante
Sin estado :(
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 62
Agradecimientos dados: 1
Agradecimientos: 20 en 20 posts
Registro en: Sep 2014
Mensaje: #2
RE: Ayuda Lógico TP
No entiendo que es lo que queres consultar, si pones C1 is 10 ya estas ligando X con el valor 10 por ende siempre va a devolver eso, lo segundo es que no entiendo de donde sacas el 20 y tmpoco entiendo que predicado qres hacer =P.
19-04-2015 18:45
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] alexis caspell recibio 1 Gracias por este post
Tenshi (19-04-2015)
odin Sin conexión
Empleado de Fotocopiadora
Sin estado :(
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 38
Agradecimientos dados: 2
Agradecimientos: 11 en 11 posts
Registro en: May 2011
Mensaje: #3
RE: Ayuda Lógico TP
A ver, creo que como está planteado, jarabe es un agregado, no podes hacer caloriasJarabe(capuchino...)
Entiendo que lo que te pide es
calorías (Bebida,Calorías)
Por lo que la solución es
calorías ((jarabe(_),Calorías):- Calorías is 10.
19-04-2015 19:26
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] odin recibio 1 Gracias por este post
Tenshi (19-04-2015)
Tenshi Sin conexión
Empleado del buffet
-
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 8
Agradecimientos dados: 46
Agradecimientos: 0 en 0 posts
Registro en: Nov 2014
Mensaje: #4
RE: Ayuda Lógico TP
Lo que necesito es que me de el total del jarabe, si aparece una vez, el jarabe es 10, si aparece dos veces en la composición de la bebida, el jarabe es 20, y así sucesivamente. Gracias por responder!
19-04-2015 19:32
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
odin Sin conexión
Empleado de Fotocopiadora
Sin estado :(
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 38
Agradecimientos dados: 2
Agradecimientos: 11 en 11 posts
Registro en: May 2011
Mensaje: #5
RE: Ayuda Lógico TP
Ah, ya entendí
Entonces necesitas saber la cantidad de jarabe que tiene una bebida y multiplicarla por 10
Sería un findall(jarabe(_), Bebida, Lista), size(Lista,Cantidad), Calorías is Cantidad *10.

Corrijo, en donde dice Bebida en el findall, es la lista de ingredientes del trago

(Si no me equivoco)
Fíjate que en tu solución preguntas por cada vez que aparezca un jarabe(_) C1 "devuelve" 10, en ningun momento los acumulas
(Este mensaje fue modificado por última vez en: 19-04-2015 22:56 por odin.)
19-04-2015 19:52
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] odin recibio 1 Gracias por este post
Tenshi (19-04-2015)
alexis caspell Sin conexión
Militante
Sin estado :(
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 62
Agradecimientos dados: 1
Agradecimientos: 20 en 20 posts
Registro en: Sep 2014
Mensaje: #6
RE: Ayuda Lógico TP
ya odin te lo dio como tiene que hacerse, acrdate que es inversible solo por derecha por el findall
19-04-2015 20:05
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] alexis caspell recibio 1 Gracias por este post
Tenshi (19-04-2015)
Tenshi Sin conexión
Empleado del buffet
-
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 8
Agradecimientos dados: 46
Agradecimientos: 0 en 0 posts
Registro en: Nov 2014
Mensaje: #7
RE: Ayuda Lógico TP
ya la armé como me dijiste, y me sigue devolviendo X=10. probé que lista me hacía el findall, y me hace una lista con un solo elemento, algo así X = [jarabe(_G1745)].

Acá está el código:
caloriasJarabe(Bebida,Calorias):-
bebida(Bebida,Lista),
findall(jarabe(_),ingredientes(Lista),List),
length(List,Cantidad),
Calorias is Cantidad*10.
20-04-2015 01:59
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
odin Sin conexión
Empleado de Fotocopiadora
Sin estado :(
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 38
Agradecimientos dados: 2
Agradecimientos: 11 en 11 posts
Registro en: May 2011
Mensaje: #8
RE: Ayuda Lógico TP
Ingredientes(Lista) no se como es que lo que definiste
Pero con que pases findall(jarabe(_), Lista,List) debería devolverte todos los jarabes, porque Lista ya son los ingredientes
20-04-2015 12:30
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
LAUS Sin conexión
Campeon del cubo Rubik
:)
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 129
Agradecimientos dados: 52
Agradecimientos: 4 en 2 posts
Registro en: Jul 2008
Mensaje: #9
RE: Ayuda Lógico TP
Ojo que no está bien hacer C1 is 10, cuando querés ligar una variable directamente en lugar de C1 pones 10 y listo.

caloriasJarabe(Bebida,10)

Fijate en la página de pdep cómo se usa el is.

Acá:
https://4924d24e-a-62cb3a1a-s-sites.goog...edirects=0

o acá:
http://uqbar-wiki.org/index.php?title=Unificaci%C3%B3n_y_Pattern-Matching#Unificaci.C3.B3n

Espero haber ayudado. =)
20-04-2015 13:20
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
greenelephant Sin conexión
Empleado del buffet
Miss Mango
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 20
Agradecimientos dados: 56
Agradecimientos: 9 en 4 posts
Registro en: Mar 2014
Mensaje: #10
RE: Ayuda Lógico TP
No devuelve todos los jarabes con ninguno de los dos códigos, devuelve uno sólo o falso en algunos casos
Devuelve algo del estilo X=jarabe(_Getcetc)
20-04-2015 18:38
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Martin. Sin conexión
Presidente del CEIT
Enjoy it !
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.380
Agradecimientos dados: 88
Agradecimientos: 296 en 137 posts
Registro en: Oct 2011
Mensaje: #11
RE: Ayuda Lógico TP
Acá lo tenes resuelto:

bebida(frappuccinoFrutilla,[base(helado,80),jarabe(frutilla),jarabe(dulceDeLeche),leche(2,60)]).
estaJarabe(jarabe(Nombre),Lista):-
member(jarabe(Nombre),Lista).
caloriasJarabe(Bebida,Calorias):-
bebida(Bebida,Lista),
findall(Jarabe,estaJarabe(Jarabe,Lista),List),
length(List,Cantidad),
Calorias is Cantidad*10.



Acordate que en el findall tenes 3 parametros. El primero es la/las variables que vas a analizar, el segundo son los predicados que la involucran y en el tercero va la lista resultante.
En este caso la "variable" a analizar es el jarable, el predicado que usamos es el que analiza si el jarabe está en la lista. Luego nos devuelve una lista con todos los jarabes que están, y a eso le aplicamos lo restante.
OFFTOPIC: No se si se llama variables (ya me olvidé su correcto nombre).

[Imagen: jQJfyBGh9SOmZ.png]
(Este mensaje fue modificado por última vez en: 20-04-2015 19:49 por Martin..)
20-04-2015 19:45
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
greenelephant Sin conexión
Empleado del buffet
Miss Mango
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 20
Agradecimientos dados: 56
Agradecimientos: 9 en 4 posts
Registro en: Mar 2014
Mensaje: #12
RE: Ayuda Lógico TP
El código funciona sólo si Lista llega ligada, debería quedar
estaJarabe(jarabe(Nombre),Lista):-
bebida(_,Lista),
member(jarabe(Nombre),Lista).
21-04-2015 21:19
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Tenshi Sin conexión
Empleado del buffet
-
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 8
Agradecimientos dados: 46
Agradecimientos: 0 en 0 posts
Registro en: Nov 2014
Mensaje: #13
RE: Ayuda Lógico TP
Ya lo pude solucionar! Les dejo como me quedó, quizas le sirva a alguien:

caloriasJarabe(Bebida,C3):-
bebida(Bebida,Lista),
ingredientes(Lista),
findall(Jarabe,member(jarabe(Jarabe),Lista),List),
length(List,Cantidad),
C3 is Cantidad*10.

Gracias!!
21-04-2015 23:46
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: