如何计算列表中列表的所有长度?

时间:2018-12-28 17:46:54

标签: prolog

我正在尝试计算一个列表,该列表包含列表中每个列表的长度。

我的代码是:

length_list(A, B, N) :-
  findall(length(Path,E), 
  path(A, B, Path, Length), N).

path(A, B, [A, B], X) :-
  edge(A, B, X).

path(A, B, PathAB, Length) :-
  edge(A, C, X),
  path(C, B, PathCB, LengthCB),
  PathAB = [A | PathCB],
  Length is X + LengthCB.

path(A, B, PathAB, Length)将计算点A和点B之间存在的所有路径及其长度

我的问题是我的代码返回:

?- length_list(a,d,N).
N = [length([a, b, d], _6624), 
     length([a, b, c, d], _6588), 
     length([a, b, c, e, d], _6546), 
     length([a, b, c, e|...], _6498), 
     length([a, b, c|...], _6456)].

它返回length(Path,E)的列表,但我希望有E的列表。
我怎样才能做到这一点?

0 个答案:

没有答案