的列表中刪除列表中的排列假設我有列表在序言中,如何從列表
L= [[1,2,3], [3,2,1],[2,1,2],[3,1,2], [1,2,2]].
,你可以看到,[1,2,3]
,[3,2,1]
和[3,1,2]
互爲排列的列表。 [2,1,2]
和[1,2,2]
也是彼此的置換。
我的目標是刪除列表中所有元素的排列。 結果列表應該是:
L'=[[1,2,3],[2,1,2]].
我的想法到目前爲止是利用成員(X,L),以在列表中找到一個元素,那麼使用permutation(X,Xperm)
獲得的X
置換,然後檢查是否Xperm
是在L
,如果是的話,刪除它。
然而,結果不是我想要的。
任何人都可以幫助我嗎?
如果L = [[0,0,1],[0,1,1]],remove_dups給了我X = [[0,1,1]]。這是不對的。是否因爲SWI-prolog的排序會刪除重複項?例如在我的序言實現中,sort([0,0,1])= [0,1]。 – user2683732
@ user2683732你說得對,我錯過了那部分。 'sort/2'確實會刪除重複項。切換到'msort/2'來避免這種行爲。 – dasblinkenlight