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
.
我怎样才能做到这一点?
解决方案
推荐阅读
- amazon-s3 - AWS S3 缓存控制 0 TTL 0 未更新
- excel - 如何自动刷新受保护工作表中的数据透视表
- javascript - 在没有用户选择器对话框的情况下获取当前用户的访问令牌
- xcode - 有没有办法从 bash 触发 xcode 的运行?
- java - 目标能否在与插件开发人员提供的默认预期阶段不同的阶段运行?
- r - R - 在重复的 ID 和索引中有条件地选择
- javascript - Chrome的开发工具打开时没有页面转换
- c++ - C++异常0xC00000FD:堆栈溢出(参数:0x00000001、0x00C02F30)
- python - 标准 sql bigquery 查询失败
- xcode - 复制快捷键无法使用,报错