我正在尝试计算一个列表,该列表包含列表中每个列表的长度。
我的代码是:
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
的列表。
我怎样才能做到这一点?