【发布时间】:2014-12-09 00:54:40
【问题描述】:
我是 Prolog 的新手,非常困惑!我不断收到“[WMAPDY] 的单例变量”警告。我在某处读到有时该警告是无用的。我还读到该程序不会因为警告而编译所有子句?
我正在尝试做的程序是一个密码算术难题,应该“解决”AM+PM=DAY。
如果有人可以帮助解决这个错误,并且单例变量警告总是很重要,我将不胜感激!
斯科特
solve([A,M,P,D,Y]):-
select(A,[0,1,2,3,4,5,6,7,8,9],WA), % W means Without
not(A=0),
select(M,WA,WMA),
select(P,WMA,WMAP),
not(P=0),
select(D,WMAP,WMAPD),
not(D=0),
select(Y,WMAPD,WMAPDY),
DAY is 100*D+10*A+Y,
AM is 10*A+M,
PM is 10*P+M,
DAY is AM+PM.
【问题讨论】:
-
没用的不是警告,而是变量!
-
所以我应该取出变量?
-
具体来说,在您的表达式
select(Y,WMAPD,WMAPDY)中,WMAPDY变量不会在其他任何地方使用。换句话说,您的select提供了您不使用的结果。如果您不需要select,则将其删除。如果您需要select的结果,请使用它。
标签: prolog singleton cryptarithmetic-puzzle