【问题标题】:Return elements list of list prologs [duplicate]返回列表序言的元素列表[重复]
【发布时间】:2018-11-05 16:42:00
【问题描述】:

如何在 Prolog 中返回列表列表的所有元素:

这是我的代码:

treturn_list_members([[Head|_]|Lists], Head).
treturn_list_members([[_|T]|Lists], Head):- return_list_members([T|Lists], Head).

当我执行时,它只返回第一个列表的元素。

?- treturn_list_members([[12,3],[45,6],[11,90]],L).
L = 12 ;
L = 3 ;
false.

【问题讨论】:

  • 这是 Prolog,所以定义成为会员意味着什么。不要将其视为“返回成员列表”。相反,定义成为会员意味着什么。以下情况之一为真:is_a_member(E, [List|Lists]) :- member(E, List).is_a_member(E, [_|Lists]) :- is_a_member(E, Lists). 如果您不允许使用 member/2,请自行选择,因为它相当简单。

标签: list prolog head


【解决方案1】:

宁可使用更好的名称。 “回归”意味着您将这种关系操作化。但只要说出论点是什么就足够了:

listoflist_member(Xss, X) :-
   member(Xs, Xss),
   member(X, Xs).

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多