我是Prolog的新手,我无法弄清楚如何获得结果。
我想计算列表中对的可能组合。
示例:输入是列表[a,b,c],我想获得对(a,b),(a,c),(b,c)。我希望每对都保存为列表。
非常感谢任何帮助。
答案 0 :(得分:1)
正如丹尼尔指出的那样,你应该试着自己找到解决方案。
你可以只用一个findall / 3来获得结果,使用append / 3来得到一起该对的第一个元素和其余的元素,并且一个成员/ 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)不同。