使用SWI-Prolog。我有队伍的名单说:在比较序言中的事实时得到重复的答案
rank(London, 3.5).
rank(New York, 3.5).
rank(Seattle, 2.3).
,我试图让我的头周围做一个规则,打印/返回与同级别的任何事实。所以在这种情况下,它会回来伦敦&纽约。
以下是我到目前为止所提出的问题,唯一的问题是我用它得到的重复项(尽管它们与当前规则完全相符)。以某种方式使用递归会有帮助吗?
equal_rank(_):-
rank(U1, R1),
rank(U2, R2),
U1 \== U2,
R1 == R2,
print(R1), print(': '), print(U1), print(', '), print(U2), nl,
fail.
输出将是:
3.5: London, New York
3.5: New York, London
我只是无法弄清楚如何停止第二行。
对很多不方便的“打印/ 1”调用的小小评论:考虑使用格式/ 2:format(“〜w:〜w,〜w \ n”,[R1,U1,U2]相同的结果,并且更容易阅读和写入。 – mat 2011-01-13 23:06:10