【问题标题】:How to make a list of lists in prolog如何在prolog中制作列表列表
【发布时间】:2011-05-12 18:34:16
【问题描述】:

我使用 SWI-Prolog,我想列出其他几个列表。

比如我要放下面三个列表

[a,b,c]
[1,2]
[d]

变成一个看起来像[[a,b,c],[1,2],[d]] 的更大的。

divideList([]):-!.

divideList([Head|Tail]):-
    list_to_set(Head,H),%H is a List 
    divideList(Tail).

我想将所有 H 放在一个列表中。 我该怎么做?

【问题讨论】:

  • 问题不清楚。您是否有固定数量的列表要放入一个列表中?
  • 是的,我有三个列表,但可以更改。我想把它们放在更大的一个。
  • 假设三个列表与变量 A,B,C 统一,那么您只需编写 [A,B,C]
  • 是的,同样。我有一个递归循环,在每次迭代中我都会计算 H 变量。 (H 看起来像 [a,b,c])。我想在循环之后放入一个大的。像 [[a,b],[a,b,c]]。
  • divideList([]):-!。 divideList([Head|Tail]):- list_to_set(Head,H), divideList(Tail)。我的代码是这样的。 H 是一个列表。

标签: list prolog predicate


【解决方案1】:

问题是你没有在你的谓词中使用 H 来放置你想要的列表

应该这样做

divideList([], []):-!.
divideList([Head|Tail], [H|HTail]):-
    list_to_set(Head,H),%H is a List 
    divideList(Tail, HTail).

第二个参数将包含您的列表。

【讨论】:

  • @larsman:是的,但我只是添加了 OP 代码中缺少的内容,所以我保持原样。
猜你喜欢
  • 2018-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-17
  • 1970-01-01
  • 1970-01-01
  • 2017-03-26
相关资源
最近更新 更多