我正在尝试在Prolog中工作,但在理解如何解决问题方面遇到困难。我正在尝试做的是创建3个元素的元组,每个元素都来自不同的列表。我需要做的是,从三个列表中为每个可能的组合组成三个元组。我的计划是获取两个列表中的第一个元素,然后遍历第三个列表中的每个元素,为每个元素创建一个元组。然后取第一个列表中的第一个元素和第二个列表中的第二个元素,并再次遍历第三个列表中的每个元素。我了解这可能很难遵循。我的总体目标是为三个列表中的每种可能组合创建一堆元组。元组中的第一个元素来自第一个列表,第二个元素来自第二个列表,第三个元素来自第三个列表。
我是Prolog的初学者,因此我对我应该走的方向以及如何用代码写出自己的想法感到困惑。因此,任何帮助将不胜感激。
谢谢
答案 0 :(得分:0)
您能解决两个列表吗?如果是这样,那么您 就能解决其中的任意个问题:
pairup_lists( [A, B | T] , X ):-
pairup_lists( [B | T] , Y),
pairup_two_lists( A, Y, X).
您将需要在此处添加一些极端情况,并实现pairup_two_lists/3
谓词。
预先知道只有三个,可以内联递归并将所有内容融合为一个谓词pairup_three_lists/4
。
那么,如何解决pairup_two_lists/3
问题?
如果第一个列表是单例列表,那么问题就不会等同于另一个更简单的pair_up_an_element_and_a_list/3
问题吗?
如果第一个列表中包含更多元素,那么可以将其拆分为头和尾,那么在没有更多元素的情况下,逐个元素地处理尾列表不是相同的逻辑处理?