[英]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.