首页 > 解决方案 > 在 Prolog 中查找列表中列表的长度

问题描述

例如:

count_blocks([[b,c,f],[a,d,g],[h,e]],C).
C=[3,3,2]

我知道我可以通过以下方式找到列表的长度:

len([], LenResult):-
    LenResult is 0.

len([X|Y], LenResult):-
    len(Y, L),
    LenResult is L + 1.

但不确定如何计算列表中的列表长度。外部列表长度始终为 3(内部列表可能为空)。

标签: listprolog

解决方案


您应该使用长度执行映射。您可以使用 映射maplist/3,因此您可以使用:

count_blocks(L, R) :-
    maplist(length, L, R).

推荐阅读