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.
我正在尝试使用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.