我正在嘗試編寫一個函數,它接受兩個列表並返回true,如果第一個列表中的每個元素至少在第二個列表中出現一次。例如:Prolog allMember函數
allMember(X, [a,b]).
X = [] ;
X = [a] ;
X = [b] ;
X = [a a] ;
X = [a b] ;
X = [b a] ;
X = [b b] ;
false.
麻煩的是,在最後;該程序循環無限檢查每個可能的列表。我怎樣才能解決這個問題?
allmember([], _).
allmember([F|R], L2) :- length([F|R], Len1),
length(L2, Len2),
Len1 =< Len2,
member(F, L2),
allmember(R, L2).
都列表排序? – 2014-10-06 06:11:15
@CommuSoft這是一個很好的問題,但從他的示例輸出來判斷,可能不是。儘管如此,仍然需要澄清。 – 2014-10-06 06:25:55