簡體   English   中英

三個列表的序言交集

[英]Prolog intersection of three lists

請提供一些有關在Prolog中攔截三個列表的建議嗎?

我截取了兩個列表:

prunik([], _, []).

prunik([H1|T1], L2, [H1|Res]) :-
    member(H1, L2),
    prunik(T1, L2, Res).

prunik([_|T1], L2, Res) :-
    prunik(T1, L2, Res).

當我提出這個問題時,它是可行的:

prunik([1,3,5,2,4], [6,1,2], X).

我嘗試將其重制為三個列表,但我真的不知道。 有什么建議嗎?

您將兩個列表相交的代碼有點錯誤,請參閱最后3個答案:

?- prunik([1,3,5,2,4], [6,1,2], X).
X = [1, 2] ;
X = [1] ;
X = [2] ;
X = [].

但是,如果您想擴展代碼以在三個列表上工作:

prunik([], _, _, []).

prunik([H1|T1], L2, L3, [H1|Res]) :-
    member(H1, L2),
    member(H1, L3),
    prunik(T1, L2, L3, Res).

prunik([_|T1], L2, L3, Res) :-
    prunik(T1, L2, L3, Res).

樣本輸入/輸出:

?- prunik([1,2,3], [3,2,4,5,6], [2,3,4], R).
R = [2, 3] ;
R = [2] ;
R = [3] ;
R = [].

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM