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

如何编写校验{a,b}组成列表规则的Prolog程序

Prolog实现{a,b}字符列表规则匹配解决方案

需求说明

  • 处理仅由字符a、b组成的列表
  • 满足以下两个条件时返回true:
    • 列表中至少包含1个a
    • 列表恰好以1个b结尾,末尾不能有多个b也不能没有b

参考示例验证

  • 符合规则:aaab
  • 不符合规则:aba(末尾为a)、b(无a)、a(无末尾b)

原有代码问题分析

你当前的代码仅能匹配任意数量a组成的列表,没有对末尾唯一b、至少一个a的限制:

langage([]).
langage([a | S]):-
    langage(S).

解决方案代码

% 基础规则:最小符合场景为至少一个a加末尾b,即[a,b]
langage([a, b]).
% 递归规则1:合法列表头部可以追加任意数量的a
langage([a | S]) :-
    langage(S).
% 递归规则2:合法列表头部可以追加任意数量的b(不会出现在末尾)
langage([b | S]) :-
    langage(S).

测试验证

直接在Prolog终端执行查询即可验证效果:

  • langage([a,a,a,b]). 返回true
  • langage([a,b,a]). 返回false
  • langage([b]). 返回false
  • langage([a]). 返回false
  • langage([b,a,b]). 返回true(符合要求:有a、末尾仅一个b)
  • langage([a,a,b,b]). 返回false(末尾有2个b)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:54:02