【发布时间】:2013-01-27 13:38:27
【问题描述】:
这是一个应该找出谁与 john 兼容的程序。 我是 Prolog 的新手。为了让Prolog知道例如。遇见(X,Y)=遇见(Y,X) 已经写了很多代码。 现在当我开始查询时
?- compatible(john, X)
进入无限循环...
源代码:
compatible(X,Y) :- reading(X), reading(Y).
compatible(X,Y) :- football(X), football(Y).
compatible(X,Y) :- friends(X,Y).
compatible(X,Y) :- mutual(X,Y).
friends(X,Y) :- havemet(X,Y), compatible(X,Y).
havemet(X,Y) :- met(X,Y).
havemet(X,Y) :- met(Y,X).
mutual(X,Y) :- friends(X,Temp), friends(Y,Temp).
mutual(X,Y) :- friends(Temp,X), friends(Y,Temp).
mutual(X,Y) :- friends(X,Temp), friends(Temp,Y).
mutual(X,Y) :- friends(Temp,X), friends(Temp,Y).
football(john).
football(james).
friends(john, carl).
friends(carl, john).
reading(carl).
reading(fred).
reading(emily).
met(carl, emily).
met(fred, james).
met(fred, emily).
我一直在研究这么多,但我仍然不明白问题是什么以及如何解决它。能帮到我就太好了。
【问题讨论】:
-
你的意思可能是
compatible(john, X)? (大写 X)? -
是的,打错字了,抱歉
标签: prolog swi-prolog failure-slice b-prolog xsb