0
我對自己感到困惑,如果有人能指引我朝着正確的方向,這將會很有幫助。我需要從嵌套列表中獲取重複項。我想我可以簡單地找出如何從常規列表中找出重複的東西,然後制定一個獲取子集的規則,然後以某種方式將它們組合起來,它會起作用,但我認爲我通過這樣做會讓自己更加困惑。嵌套列表重複
這是我到目前爲止,它刪除重複罰款。
刪除重複:
duplicate([],[]).
duplicate([H|T],C) :- var(H,T),!, duplicate(T,C).
duplicate([H|T],[H|C]) :- duplicate(T,C).
var(X,[H|_]) :- X==H,!.
var(X,[_|T]) :- var(X,T).
子集規則:
subset([],_).
subset([H|T],L):- member(H,L),subset(T,L).
目前如果我叫duplicate([1,2,2,3,4,a,a,a,b,b,b], X).
它會返回X = [1,2,3,4a,b]
這是正確的,但我希望能夠調用duplicate([1,[2,[2,[1,[a,[a]]]]]], X).
,並使其返回X = [1,2,a]
我的思維過程是正確的還是我錯誤地想到了這一點?
反正有沒有包括在該規則,以便用戶該過程可以調用'duplicate([1,[2,[2,[1,[a,[a]]]]]],L).'? – user3646479
@ user3646479是的。將你的'duplicate'重命名爲'duplicate_flatten'並且定義'duplicate(X,Y): - flatten(X,L),duplicate_flatten(L,Y).' –