【发布时间】:2015-12-14 17:23:58
【问题描述】:
作为大学要求的一部分,我正在 Prolog 中编写 Mastermind 求解器(我正在使用 SWI-Prolog)。我以前从未在 Prolog 中编程过,如果我可能没有使用正确的术语,请原谅。
我在增加黑白计数器时遇到问题(表示有多少颜色在正确的位置,有多少在代码中但放错了位置)。
我在网上找到了这个例子(完整代码here):
determine_blacks([],[],[],[],0).
determine_blacks([Color|Try],[Color|Code],ReducedTry,ReducedCode,s Black) :-
determine_blacks(Try,Code,ReducedTry,ReducedCode,Black).
determine_blacks([Color1|Try],[Color2|Code],
[Color1|ReducedTry],[Color2|ReducedCode],Black) :-
color(_,Color1), color(_,Color2),
\+(Color1 == Color2),
determine_blacks(Try,Code,ReducedTry,ReducedCode,Black).
我想知道:"s Black" (line2) 中的 's' 代表什么?我注意到如果我删除它,计数器将停止增加。所以我想这以某种方式可以解决问题,但我在文档中找不到它。
如果您能解释一下 '\+' (line7) 应该做什么,我将不胜感激。这段代码对我的水平来说有点太高级了,我正在努力解决它......
【问题讨论】: