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

Prolog求解TWO+TWO=FOUR密码算术题编译报错求助

Prolog求解TWO+TWO=FOUR报错修复方案

报错原因排查

  • 语法问题(直接触发编译报错):谓词名solution和参数列表的左括号之间存在多余空格,Prolog语法不允许谓词名与参数括号间有空格,编译器会将solution识别为独立表达式,后续括号内容无法匹配语法规则,因此抛出. or operator expected after expression错误。
  • 逻辑问题(语法修复后会出现无效解):缺少数字首位不为0的约束,两位数TWO的首位T、四位数FOUR的首位F不能为0,否则会生成不符合常规数字书写规则的结果。

修正后可运行代码

solution(T, W, O, F, U, R) :-
    select(T, [0,1,2,3,4,5,6,7,8,9], L1),
    T \= 0,
    select(W, L1, L2),
    select(O, L2, L3),
    select(F, L3, L4),
    F \= 0,
    select(U, L4, L5),
    member(R, L5),
    FOUR is F * 1000 + O * 100 + U * 10 + R,
    TWO is T * 100 + W * 10 + O,
    FOUR is TWO + TWO.

运行验证

在Prolog交互环境中执行查询:
?- solution(T,W,O,F,U,R).
可得到唯一有效解:

T = 7, W = 3, O = 4, F = 1, U = 6, R = 8
验证计算:734 + 734 = 1468,完全匹配题目要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:45:05