标准Prolog(非SWI-Prolog)嵌套列表处理:实现cat/2统计谓词
标准Prolog cat/2谓词实现
功能说明
接收键值结构的嵌套列表作为输入,输出二元列表,第一个元素为所有键为0的对应值总和,第二个元素为所有键为1的对应值总和。
实现代码
% 空列表边界条件:两类值总和均为0 cat([], [0, 0]). % 匹配键为0的子列表,累加对应值到0类总和 cat([[0, Value] | Tail], [Total0, Total1]) :- cat(Tail, [SubTotal0, SubTotal1]), Total0 is SubTotal0 + Value, Total1 is SubTotal1. % 匹配键为1的子列表,累加对应值到1类总和 cat([[1, Value] | Tail], [Total0, Total1]) :- cat(Tail, [SubTotal0, SubTotal1]), Total0 is SubTotal0, Total1 is SubTotal1 + Value.
使用示例
输入查询(注意标准Prolog列表元素用逗号分隔,若你原示例用空格分隔需先调整格式):cat([[0,1], [1,2], [1,3], [0,4], [0,3]], Result).
输出结果:Result = [8, 5]
说明
本实现完全遵循ISO标准Prolog规范,未使用任何SWI-Prolog专属扩展,可在所有兼容标准Prolog的环境中运行。
内容的提问来源于stack exchange,提问作者Jose Luis Landivar
相关产品推荐
相关产品推荐

