Ayuda con ejercicio en Prolog
Publicado por Ronald (1 intervención) el 19/08/2010 23:52:56
Buenas tengo una duda con el siguiente codigo:( si lo copia,y lo compila estaría bien)
puede_comprar(A,B) :- /* A puede comprar B SI */
persona(A), /* A es persona Y */
coche(B), /* B es coche Y */
gusta(A,B), /* B le gusta a A Y */
se_vende(B). /* B se vende. */
persona(kelly).
persona(judy).
persona(ellen).
persona(mark).
coche(amarillo).
coche(arreglado).
gusta(kelly, arreglado).
gusta(judy, pizza).
gusta(ellen, tenis).
gusta(mark, tenis).
se_vende(pizza).
se_vende(amarillo).
se_vende(arreglado).
Y AL HACER LAS SIGUIENTES CONSULTAS ME DA LAS RESPUESTAS:
?- puede_comprar(kelly,Que).
Que = arreglado.
?- puede_comprar(Quien,arreglado).
Quien = kelly ;
false.
Mi pregunta es, viendo el código claramente se puede ver que la kelly es la única que puede comprar el coche arreglado.
¿Por qué al consultar " ?- puede_comprar(Quien,arreglado). " me da dos respuestas: Quien = kelly ; false. ?
PD: Notar que cuando consulto " ?- puede_comprar(kelly,Que). " solo meda la respuesta: Que = arreglado.
Y no me da tambien false como en la segunda consulta
puede_comprar(A,B) :- /* A puede comprar B SI */
persona(A), /* A es persona Y */
coche(B), /* B es coche Y */
gusta(A,B), /* B le gusta a A Y */
se_vende(B). /* B se vende. */
persona(kelly).
persona(judy).
persona(ellen).
persona(mark).
coche(amarillo).
coche(arreglado).
gusta(kelly, arreglado).
gusta(judy, pizza).
gusta(ellen, tenis).
gusta(mark, tenis).
se_vende(pizza).
se_vende(amarillo).
se_vende(arreglado).
Y AL HACER LAS SIGUIENTES CONSULTAS ME DA LAS RESPUESTAS:
?- puede_comprar(kelly,Que).
Que = arreglado.
?- puede_comprar(Quien,arreglado).
Quien = kelly ;
false.
Mi pregunta es, viendo el código claramente se puede ver que la kelly es la única que puede comprar el coche arreglado.
¿Por qué al consultar " ?- puede_comprar(Quien,arreglado). " me da dos respuestas: Quien = kelly ; false. ?
PD: Notar que cuando consulto " ?- puede_comprar(kelly,Que). " solo meda la respuesta: Que = arreglado.
Y no me da tambien false como en la segunda consulta
Valora esta pregunta


0