1

例: 与えられた 3 つのステートメント:

car(toyota,[sedan,5_seater,head_rest]).
car(nissan,[4_seater,sedan,2_door,head_rest,blue]).
car(peugeot,[head_rest,sedan,5_seater,sun_roof]).

items(A, X, Y)A が X のすべてのパーツを含み、Y のパーツを含まないリストカーである場合に真となる Prolog 述語を作成する方法。

誰かが私を助けてくれることを本当に願っています。前もって感謝します!

4

1 に答える 1

1

減算/3を参照

items(A, X, Y) :- subtract(X, Y, A).

リストを並べ替えたままにしておく場合 (つまり、セットのように)、ord_subtract /3 ははるかに優れた代替手段です

編集:役に立たない回答で申し訳ありません。ここに修正されたものがあります。関連するリスト処理述語は交差/3ですが、 setof /3 は強力なリスト「コンストラクター」です。

items/3 はこのように書ける

items(A, Present, Miss) :-
    setof(Car, Parts^(car(Car, Parts),
              intersection(Parts, Present, Present),
              intersection(Parts, Miss, [])), A).

あなたのデータベースは少し貧弱なので、テストするために入力します

?- items(L,[sedan],[blue]).
L = [peugeot, toyota].
于 2013-09-23T09:38:52.573 に答える