我是 Prolog 的新手,我不知道如何获得结果。
我想计算列表中可能的对组合。
示例:输入是一个列表 [a,b,c],我想获得对 (a,b),(a,c),(b,c)。我希望每一对都保存为一个列表。
任何帮助是极大的赞赏。
正如丹尼尔所指出的,您应该尝试自己找到解决方案。
只需一个 findall/3 即可获得结果,使用 append/3将配对的第一个元素和其余元素放在一起,单个 member/2 足以选择配对的第二个元素。
当然,实际的解决方案远没有那么冗长,也更清晰。如果你尝试组装它,你会学到很多东西......
all_pairs(L, R) :-
findall((A,B), (..., ...), R).
产量
?- all_pairs([a,b,c],L).
L = [ (a, b), (a, c), (b, c)].
编辑您只需要修复细节:
...((A,B), (append(_, [A|T], L), ...), R).
在上下文中生成第一个元素,并且您知道如何获取 B 。
请注意,[A,B] 它与问题中所需的 (A,B) 不同。