【问题标题】:Going through lists Prolog浏览列表 Prolog
【发布时间】:2019-03-18 05:22:28
【问题描述】:

我正在尝试在 Prolog 中工作,但我无法理解如何解决我的问题。我想要做的是创建 3 个元素的元组,每个元素都来自不同的列表。我需要做的是为三个列表中的每个可能的组合制作一个三元组。我的计划是获取两个列表中的第一个元素,然后遍历第三个列表中的每个元素,为每个元素创建一个元组。然后取第一个列表中的第一个元素和第二个列表中的第二个元素,然后再次遍历第三个列表中的每个元素。我知道这可能很难理解。我的总体目标是为三个列表中的每个可能组合创建一堆元组。元组中的第一个元素来自第一个列表,第二个元素来自第二个列表,第三个元素来自第三个列表。

我是 prolog 的初学者,所以我对我需要走的方向以及如何用代码编写我的想法有点困惑。因此,我们将不胜感激。

谢谢

【问题讨论】:

    标签: list prolog cartesian-product


    【解决方案1】:

    你能解决两个列表的问题吗?如果是这样,那么您可以解决任何个问题:

    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 问题?

    如果第一个列表中有更多元素,那么它可以分为头和尾,同样的逻辑是否适用于处理尾列表,逐个元素,直到没有更多元素处理?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-14
      • 2016-08-08
      • 1970-01-01
      • 1970-01-01
      • 2013-06-20
      • 2013-06-06
      • 2021-01-05
      相关资源
      最近更新 更多