使用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