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 ejercicio de logico (pdp)
Autor Mensaje
kroo3 Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 21
Agradecimientos dados: 0
Agradecimientos: 1 en 1 posts
Registro en: Sep 2012
Mensaje: #1
Duda ejercicio de logico (pdp) Ejercicios Paradigmas de Programación
Necesito ayuda =(

Tengo esta base de conocimiento:

bebida(dulceDeLecheLatte,[base(cafe,100),leche(10,50)]).
bebida(frappuccinoFrutilla,[base(helado,80),jarabe(frutilla),jarabe(dulceDeLeche),leche(2,60)]).
bebida(irishCream,[base(cafe,90),jarabe(baileys),leche(3,50)]).
bebida(explosiva,[base(ron,90),base(vodka,100),jarabe(frutilla)]).
bebida(extrema,[base(cafe,100),base(helado,80),base(ron,90),leche(10,10),jarabe(chocolate)]).
bebida(light,[base(cafe,5),jarabe(frutilla)]).
bebida(cafecito,[base(cafe,10)]).
bebida(conTodo,[base(cafe,5),jarabe(frutilla),base(helado,80),base(mouse,90),leche(10,10),jarabe(chocolate),base(helado,80),base(mouse,90),leche(10,10),jarabe(chocola​te),base(helado,80),base(mouse,90),leche(10,10),jarabe(chocolate)]).
bebida(milkshake, [base(helado, 80), leche(5, 10)]).
bebida(cafeConLeche, [base(cafe, 5), leche(5, 10)]).

tieneAlcohol(baileys).
tieneAlcohol(tiaMaria).
tieneAlcohol(vodka).
tieneAlcohol(ron).


Este predicado (relaciona una bebida con sus ingredientes):

ingrediente(Bebida,Ingrediente):-
bebida(Bebida,Ingredientes),
member(Ingrediente,Ingredientes).

y tengo que hacer este punto:
-Saber si una bebida esAlcoholica/1 , es decir, si tiene algun componente que sea alcoholico.

A mi se me ocurrio hacer lo siguiente:

esAlcoholica(Bebida):-
baseOjarabe(Bebida).


baseOjarabe(Bebida):-
ingrediente(Bebida, jarabe(Nombre)),
tieneAlcohol(Nombre).

baseOjarabe(Bebida):-
ingrediente(Bebida,base(Nombre,_)),
tieneAlcohol(Nombre).

Esto compila y cuando pregunto por una bebida me dice efectivamente si es o no alcoholica, pero si consulto para que me de todas las bebidas que son alcoholicas me da esto:

| esAlcoholica(B).
B = irishCream ;
B = explosiva ;
B = explosiva ;
B = extrema ;
false.

el problema de esto es que despues tengo que utilizar el predicado esAlcoholica en otro predicado y me termina dando mal.
Alguna ayuda? creo que debe ser un problema de inversibilidad, pero no estoy del todo segura. =P
26-06-2015 23:58
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Motomine Sin conexión
Militante
Sin estado :(
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 62
Agradecimientos dados: 10
Agradecimientos: 15 en 10 posts
Registro en: Feb 2012
Facebook
Mensaje: #2
RE: Duda ejercicio de logico (pdp)
No entiendo cual es el problema, porque decis que no anda? Pareciera estar bien. Si con problema te referis a que te da dos veces la misma bebida es porque se genera dos veces con esa bebida, pero no se considera mal.

Saludos!
27-06-2015 00:21
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
kroo3 Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 21
Agradecimientos dados: 0
Agradecimientos: 1 en 1 posts
Registro en: Sep 2012
Mensaje: #3
RE: Duda ejercicio de logico (pdp)
Bueno si eso esta bien paso al siguiente punto en el que tengo problemas, esto tambien esta en la base del conocimiento:

pedido(vero,frappuccinoFrutilla).
pedido(vero, light).
pedido(gus,irishCream).
pedido(gus,explosiva).
pedido(gus,extrema).
pedido(gus,frappuccinoFrutilla).
pedido(alf,conTodo).
pedido(franco,light).
pedido(franco,frappuccinoFrutilla).
pedido(franco,irishCream).
pedido(franco,explosiva).
pedido(franco,extrema).
pedido(franco,conTodo).
pedido(nico, frappuccinoFrutilla).
pedido(nico, dulceDeLecheLatte).
pedido(nico, light).

Definir tieneProblemitas/1 para saber quienes son los clientes que tienen problemitas, que son quienes pidieron alguna bebida con mas de 10 ingredientes, y tambien lo son quienes pidieron todas las bebidas alcoholicas del bar, pero los que pidieron algo light nunca tienen problemitas.

definido seria algo asi :

tieneProblemitas(Cliente):-
problemitasMasde10(),
problemitasConAlcohol().


problemitasMasde10():-
pidioBebidaCompleta(),
not(pidioAlgoLight()).

problemitasConAlcohol:-
pidioTodoLoAlcoholico(),
not(pidioAlgoLight()).

mi problema es con pidioTodoLoAlcoholico que me tiene que devolver quienes son los que pidieron todas las bebidas alcoholicas del bar, este una el predicado de esAlcoholica.
ayuda =(
27-06-2015 12:45
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Mardoc Sin conexión
Profesor del Modulo A
Sin estado :(
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 229
Agradecimientos dados: 46
Agradecimientos: 34 en 19 posts
Registro en: Nov 2012
Mensaje: #4
RE: Duda ejercicio de logico (pdp)
Te lo resuelvo todo, con lo que recuerdo:

tieneProblemitas(Cliente):- pidioBebidaMasDe10(Cliente), not(pidioBebidaLight(Cliente)).
tieneProblemitas(Cliente):- pidioTodoAlcoholico(Cliente), not(pidioBebidaLight(Cliente)).

pidioBebidaMasDe10(Cliente):- pedido(Cliente,Bebida), bebida(Bebida,Ingredientes), length(Ingredientes,L), (L>10). // linkeo el cliente con los pedidos, linkeo el pedido con su lista
_____________________________________________________________________________________________________de ingredientes, saco la longitud de la lista y la guardo en L
_____________________________________________________________________________________________________y lo otro ya te darás cuenta

pidioTodoAlcoholico(Cliente):- forall(pedido(Cliente,Bebida),esAlcoholica(Bebida)). // me busca todos los pedidos para un cliente dado, y se fija que todos tengan alcohol

pidioBebidaLight(Cliente):- pedido(Cliente,light).


Queria hacerme un poco el loco poniendome a redefinir algunas cosas locas del primer post, pero mejor dejarlo asi =P
(Este mensaje fue modificado por última vez en: 27-06-2015 21:42 por Mardoc.)
27-06-2015 21:41
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
kroo3 Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 21
Agradecimientos dados: 0
Agradecimientos: 1 en 1 posts
Registro en: Sep 2012
Mensaje: #5
RE: Duda ejercicio de logico (pdp)
Mardoc hay un problema con tu resolucion en particular:

cuando dice en el enunciado : "y tambien lo son quienes pidieron todas las bebidas alcoholicas del bar", dice que efectivamente pidieron esas tres bebidas(irish cream, explosiva, extrema) pero no que todas las bebidas que pidieron son alcoholicas y aca asumis que todo lo que pidieron esAlcoholica.

pidioTodoAlcoholico(Cliente):- forall(pedido(Cliente,Bebida),esAlcoholica(Bebida)).


sigo necesitando ayuda con esto :/
27-06-2015 22:09
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Mardoc Sin conexión
Profesor del Modulo A
Sin estado :(
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 229
Agradecimientos dados: 46
Agradecimientos: 34 en 19 posts
Registro en: Nov 2012
Mensaje: #6
RE: Duda ejercicio de logico (pdp)
bebidasAlcoholicasDelBar(Lista):- findall(X,(bebida(X,base(N,_)),tieneAlcohol(N)),Lista).

listaPedidosCliente(Cliente,L):-findall(Y,pedido(Cliente,Y),L).

pidioTodasLasBebidasAlcoholicas(Cliente):- listaPedidosCliente(Cliente,L), bebidasAlcoholicasDelBar(Ls), estanTodasLasAlcoholicas(L,Ls).

estanTodasLasAlcoholicas([],L).
estanTodasLasAlcoholicas([A|B],L):- member(A,L), estanTodasLasAlcoholicas(B,L).

tieneProblemitas(Cliente):- pidioBebidaMasDe10(Cliente), not(pidioBebidaLight(Cliente)).
tieneProblemitas(Cliente):- pidioTodasLasBebidasAlcoholicas(Cliente), not(pidioBebidaLight(Cliente)).
27-06-2015 23:00
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: