我是学习Prolog的新手。我想完成下面的谓语。
equalto5([[1,'a'],[3,'b'],[2,'b'],[1,'b'],[4,'c']], X) --input
删除列表中第一个元素的所有重复数字,不要删除第二个元素的重复字母。
像这样:equalto5([[1,'a'],[3,'b'],[2,'b'],[4,'c']], X)
然后基于列表列表中的第一个元素找到等于5的所有可能结果
X =[1,4]; [2,3].
equalto5(List, X) :-
findall(Num, member([Num, _], List), Ns_dupes), % numbers from nested lists.
sort(Ns_dupes, Ns), % sort/2 also deduplicates.
member(N1, Ns), % look for N1 from the numbers ...
member(N2, Ns), % and N2 ...
dif(N1, N2), % which are different ...
5 is N1 + N2, % and sum to 5.
X = [N1, N2].