1

私は Prolog を初めて使用しますが、これが簡単なことであることを願っています。リスト内の他のアイテムに関連するいくつかの事実に基づいて、リストのどこかにアイテムを追加したいと考えています。たとえば、「Y の後に X サービスが開始された」としますが、X が最後に実行されるサービスではないことがわかっています。これらの小さな情報はたくさんあり、最終的にはリストが順序を把握します。とりあえず、ある項目の「後」「前」を入力する方法が知りたいです。ルールの形として。

ありがとう。

4

1 に答える 1

1

もちろん、プログラムの構造に大きく依存します。

データベースがあるとしましょうservice(ID, StartTime)

:- dynamic service/2.

最初のリストは を使用してすぐに構築できsetof(StartTime-ID, service(ID, StartTime), List)、要素は で追加できます

add_service([ST0-ID0|R], service(ID, ST), [ST-ID, ST0-ID0|R]) :-
   ST < ST0, !.
add_service([E|R], S, [E|T]) :-
   add_service(R, S, T).
add_service([], S, [S]).

このデータを使用したテスト

service(a, 10).
service(b, 5).
service(c, 20).

?- setof(StartTime-ID, service(ID, StartTime), List), add_service(List, service(z, 12), Updated).
List = [5-b, 10-a, 20-c],
Updated = [5-b, 10-a, 12-z, 20-c].
于 2013-02-17T21:38:55.550 に答える