Prolog syntax error: . or operator expected after expression 1 error(s) compilation failed

Prolog syntax error: . or operator expected after expression 1 error(s) compilation failed

我正在尝试使用Prolog解决密码谜题,问题是

  TWO 
 +TWO
——————
 FOUR

这是我的代码,有人可以帮我解决这个问题吗?

solution (T, W, O, F, U, R) :-
    select(T, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], L1),
    select(W, L1, L2),
    select(O, L2, L3),
    select(F, L3, L4),
    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.

你的程序逻辑似乎是对的。

只是一个语法错误:您不能在过程名称和 ( 之间放置 space。所以你的程序的负责人应该是 solution(T, W, O, F, U, R) :-.

也许您想避免 F 成为 0。在那种情况下修改约束(并可能重新排列字母分配)。您还可以添加参数二和四:

solution(T, W, O, F, U, R, TWO, FOUR) :-
    select(F, [1, 2, 3, 4, 5, 6, 7, 8, 9], L1),  % F cannot be 0
    select(T, [0|L1], L2), 
    select(W, L2, L3),
    select(O, L3, L4),
    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.

正在打印所有解决方案:

?- solution(T, W, O, F, U, R, TWO, FOUR), writeln(TWO + TWO = FOUR),fail.
734+734=1468
765+765=1530
836+836=1672
846+846=1692
867+867=1734
928+928=1856
938+938=1876
false.