2

私は2セットの違いのためのこの作業述語を持っています

difference([],Y,[]).
difference([X|R],Y,Z) :-
    member(X,Y),
    !,
    difference(R,Y,Z).
difference([X|R],Y,[X|Z]) :-
    difference(R,Y,Z).

しかし、3セットで同様のものを作りたいのですが、 difference(S1,S2,S3,result)結果が(S1\S2)\S3になることがわかりません。

4

1 に答える 1

1

基本的にはすでに自分で言っています。式(S1\S2)\S3を取り、 S1\S2T1 (一時) に置き換えると、結果の式はT1\S3になります。

それでは、これをコードに入れます。

difference(S1,S2,S3,Result) :-
    difference(S1,S2,T1),       %T1 = S1\S2
    difference(T1,S3,Result).   %Result = T1\S3=(S1\S2)\S3
于 2016-01-07T21:30:41.950 に答える