私はメッセージを送信するためのネットワーク料金の降順であるかどうかを表示するようにPrologルールを作成して送信者のリストを与える必要があります。一致している場合はtrueを返し、そうでない場合はfalseを返します。質問の送信者の名前を書くことによってコストの降順を取得します。
私は数字を降順に表示するルールを作成しましたが、数字はメッセージのコストと仮定しますが、コストの降順に応じて送信者のリストをどのように置くことができますか。
8,4,3,2
はコストであり、以下のルールでは、私がこのようなクエリを書く場合に正しい降順を示しています。:-?message([8,4,3,2])
。
message(8).
message(4).
message(3).
message(2).
私は、このデータ用に作成されたルールは、このような
message([_]):-!.
message([_]):-!.
message([A,B|T]) :-A >= B,!,message([B|T]).
私の元のデータベースの外観です。今度は私のクエリは次のようになります:-?message([sonny,robert,fred,nayna]).
これは、コストが降順であるため真となります。私が間違っているのところ、私は、クエリ内の送信者の名前を書くことで、コストの降順を取得したいので、
%message(Sender, Receiver, Date, Cost_of_sending_a_message)
message(sonny,robert,'2012-05-12',8).
message(robert,sarah,'2012-05-12',5).
message(julie,mary,'2012-05-12',6).
message(fred,nayna,'2012-05-13',6).
message(fred,daniel,'2012-05-14',6).
message(nayna,lucia,'2012-05-15',3).
あなたは私を教えていただけますか? SWI-Prologのライブラリーから
@CommuSoft私にヒントを教えてください。私はあなたがプロローグに関して非常に多くの質問に答えたのを見ました。 –