You need to enable JavaScript to run this app. Swi Prolog中如何通过规则而非查询实现元素计数?
优惠活动
大模型
产品
解决方案
定价
更多

Swi Prolog中如何通过规则而非查询实现元素计数?

SWI-Prolog 子节点计数规则实现

前置基础代码(事实与已有规则)

% 事实定义
parent(child, parent).
parent(child, parent2).
parent(child2, parent).
parent(child2, parent2).

% 已定义的子节点查询规则
childof(X, Y) :- parent(Y, X).

number_of_child 规则实现

直接通过findall/3收集所有符合条件的子节点,再用length/2统计数量即可,规则写法如下:

% X:父节点,Y:X对应的子节点总数
number_of_child(X, Y) :-
    findall(Child, childof(Child, X), ChildList),
    length(ChildList, Y).

测试验证

执行查询:
?- number_of_child(parent, Y).
返回结果:
Y = 2
查询number_of_child(parent2, Y)也会得到相同结果,符合预期。

内容的提问来源于stack exchange,提问作者ZonG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 14:24:11