count([], _, 0).
count
([H
|T
], H
, R
) :- count
(T
, H
, RT
), R
is RT
+ 1.count([H|T], X, R) :- H \= X, count(T, X, R).
add_if_count_is_one
(H
, T
, RT
, R
) :- count
(T
, H
, 1), R
is RT
+ 1.add_if_count_is_one(H, T, R, R) :- count(T, H, X), X \= 1.
num_pairs([], 0).
num_pairs([H|T], R) :- delete(T, H, TT),
num_pairs(TT, RT),
add_if_count_is_one(H, T, RT, R).
:- num_pairs
([4,1,1,1,4], N
), write(N
).
Y291bnQoW10sIF8sIDApLgpjb3VudChbSHxUXSwgSCwgUikgOi0gY291bnQoVCwgSCwgUlQpLCBSIGlzIFJUICsgMS4KY291bnQoW0h8VF0sIFgsIFIpIDotIEggXD0gWCwgY291bnQoVCwgWCwgUikuCgphZGRfaWZfY291bnRfaXNfb25lKEgsIFQsIFJULCBSKSA6LSBjb3VudChULCBILCAxKSwgUiBpcyBSVCArIDEuCmFkZF9pZl9jb3VudF9pc19vbmUoSCwgVCwgUiwgUikgOi0gY291bnQoVCwgSCwgWCksIFggXD0gMS4KCm51bV9wYWlycyhbXSwgMCkuCm51bV9wYWlycyhbSHxUXSwgUikgOi0gZGVsZXRlKFQsIEgsIFRUKSwKICAgICAgICAgICAgICAgICAgICAgICBudW1fcGFpcnMoVFQsIFJUKSwKICAgICAgICAgICAgICAgICAgICAgICBhZGRfaWZfY291bnRfaXNfb25lKEgsIFQsIFJULCBSKS4KCjotIG51bV9wYWlycyhbNCwxLDEsMSw0XSwgTiksIHdyaXRlKE4pLg==