prolog:谓词如果两个列表相同而没有特定元素,则为真

时间:2018-06-17 16:52:43

标签: prolog

我想在prolog中编写一个谓词withoutElement(A,Lf,Lg),如果列表Lg与没有元素Lf的列表A相同,则为真。

例如:

withoutElement(a,[a,b,c,d],[a,b,c,d]).

=假

withoutElement(a,[a,b,c,d],[b,c,d]).

= True

这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

使用递归定义:

without_element(A, [A|Lg], Lg).    % True if element A is 
                                   % head of Lf and the tail (Lg)
                                   % is the same.
without_element(A, Lf, [A|Lf]).    % If you want to check the other way round
without_element(A, [H|T1], [H|T2]) :- without_element(A, T1, T2).  % ↵
% Check first elements are the same, continue checking rest of lists.