Exactly one pair in Prolog list

2019-01-29 11:34发布

问题:

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.

回答1:

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.



回答2:

one_duplicate(L) :-
    sort(L, Sorted),
    length(L, Len),
    length(Sorted, SortedLen),
    Len =:= SortedLen + 1.


标签: list prolog pair