浏览清单Prolog

时间:2018-10-13 01:08:54

标签: prolog

我正在尝试在Prolog中工作,但在理解如何解决问题方面遇到困难。我正在尝试做的是创建3个元素的元组,每个元素都来自不同的列表。我需要做的是,从三个列表中为每个可能的组合组成三个元组。我的计划是获取两个列表中的第一个元素,然后遍历第三个列表中的每个元素,为每个元素创建一个元组。然后取第一个列表中的第一个元素和第二个列表中的第二个元素,并再次遍历第三个列表中的每个元素。我了解这可能很难遵循。我的总体目标是为三个列表中的每种可能组合创建一堆元组。元组中的第一个元素来自第一个列表,第二个元素来自第二个列表,第三个元素来自第三个列表。

我是Prolog的初学者,因此我对我应该走的方向以及如何用代码写出自己的想法感到困惑。因此,任何帮助将不胜感激。

谢谢

1 个答案:

答案 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问题吗?

如果第一个列表中包含更多元素,那么可以将其拆分为头和尾,那么在没有更多元素的情况下,逐个元素地处理尾列表不是相同的逻辑处理?