如果我有以下Prolog事实:
person(mary).
object(ball).
location(bedroom).
location(bathroom).
这个条款:
go(mary,bedroom).
get(mary,ball).
go(mary,bathroom).
我需要一条规则,表明球与“玛丽”一起旅行。如果询问,Prolog应该回答球是在卫生间。我尝试了以下规则,但它们不起作用:
has(X,Y) :- get(X,Y).
whereIs(P,R) :- has(P,Q),go(P,R).
在表达对象和前往不同房间之间的这种关系有哪些更好的规则?
答案 0 :(得分:1)
以下作品:
person(mary).
object(ball).
location(bedroom).
location(bathroom).
go(mary,bedroom).
get(mary,ball).
go(mary,bathroom).
whereIs(R) :- findall(R,(get(P,Q),go(P,R)),L), last(L,R),!.
开启命令:
?- whereIs(R).
R = [bathroom].
基本上,你想找到带球的人的所有位置,然后确定最后的位置。
我删除了has(),因为它与get()基本相同。