Does anybody know how I can go about determining/ensuring that there is exactly one duplicate element in a prolog list?
I am studying for a test.
Sort the list using sort/2
. It removes duplicates, so if the sorted list is exactly one shorter, you had exactly one pair.
one_duplicate(L) :-
sort(L, Sorted),
length(L, Len),
length(Sorted, SortedLen),
Len =:= SortedLen + 1.
Finding the duplicate pair is another question altogether.
one_duplicate(L) :-
sort(L, Sorted),
length(L, Len),
length(Sorted, SortedLen),
Len =:= SortedLen + 1.