You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Prolog如何定义含自然数列表的塔式结构并校验每层元素数一致

Prolog 塔式结构相等长度校验实现方案

核心思路

我们可以把你提到的塔式类型定义为自然数列表的列表,外层每个元素对应一层「楼层」,内层每个元素对应该层的「公寓」。校验逻辑的核心就是验证所有内层列表的长度完全一致,同时所有公寓元素符合自然数定义。

实现规则

  • 空塔(没有任何楼层)默认满足校验规则
  • 仅包含一层的塔也默认满足校验规则
  • 两层及以上的塔,首先取第一层的长度作为基准长度,后续每一层的长度都需要和基准长度完全相等
  • 所有楼层内的元素必须为自然数

示例代码

% 自然数判断规则:如果你的场景用整数自然数,可替换为 natural_num(N) :- integer(N), N >= 0
natural_num(0).
natural_num(s(N)) :- natural_num(N).

% 校验单楼层的所有元素都是自然数
all_natural([]).
all_natural([H|T]) :- natural_num(H), all_natural(T).

% 递归校验所有楼层长度等于基准长度,且元素都是自然数
same_length_floors(_, []).
same_length_floors(BaseLen, [Floor|Rest]) :-
    length(Floor, BaseLen),
    all_natural(Floor),
    same_length_floors(BaseLen, Rest).

% 塔式结构一致性校验入口
valid_tower([]).
valid_tower([FirstFloor|RestFloors]) :-
    length(FirstFloor, BaseLen),
    all_natural(FirstFloor),
    same_length_floors(BaseLen, RestFloors).

调用测试示例

% 校验通过:两层都有2个自然数元素
?- valid_tower([[0, s(0)], [s(s(0)), 0]]).
true.

% 校验失败:第二层只有1个元素,长度和第一层不一致
?- valid_tower([[0, s(0)], [0]]).
false.

% 校验失败:楼层元素不是自然数
?- valid_tower([[0, apple], [s(0), 0]]).
false.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:06:04