【问题标题】:Prolog Difference of 3 sets (S1\S2)\S33组Prolog差异(S1\S2)\S3
【发布时间】:2016-01-07 20:47:55
【问题描述】:

我有这个用于 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

【问题讨论】:

  • 怎么样,diff3(S1, S2, S3, R) :- difference(S1, S2, R1), difference(R1, S3, R).

标签: list prolog set set-difference


【解决方案1】:

好吧,你基本上已经自己说了:取公式 (S1\S2)\S3,用 T1 替换 S1\S2 (一个临时的),那么得到的公式是T1\S3

所以现在把它放到代码中:

difference(S1,S2,S3,Result) :-
    difference(S1,S2,T1),       %T1 = S1\S2
    difference(T1,S3,Result).   %Result = T1\S3=(S1\S2)\S3

【讨论】:

  • 非常感谢你们......我仍然试图将它全部填充到一个大谓词中,这让我很困惑。
  • @user3533469:如果还有问题,你可以edit你的问题,或者问一个新问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-12
  • 1970-01-01
  • 2013-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多