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.
出力は次のようになります。私はただ、第2ラインを停止する方法を見つけ出すことはできません
3.5: London, New York
3.5: New York, London
。
多くの不都合な "print/1"呼び出しに関する小さなコメント:代わりにformat/2を使用することを検討してください:format( "〜w:〜w、〜w \ n"、[R1、U1、U2]同じ結果となり、読み書きがはるかに容易になります。 – mat