有人知道如何确定/确保prolog列表中只有一个重复的元素吗?
我正在学习考试。
答案 0 :(得分:5)
使用sort/2
对列表进行排序。它会删除重复项,因此如果排序列表恰好短一个,那么您只有一对。
one_duplicate(L) :-
sort(L, Sorted),
length(L, Len),
length(Sorted, SortedLen),
Len =:= SortedLen + 1.
找到重复对完全是另一个问题。
答案 1 :(得分:-2)
one_duplicate(L) :-
sort(L, Sorted),
length(L, Len),
length(Sorted, SortedLen),
Len =:= SortedLen + 1.