Prolog游戏编程板评估

时间:2012-10-23 18:54:43

标签: optimization prolog

我已经在prolog中创建了一个游戏(连续4个)。我的启发式功能要求我知道棋盘上每个可能的4排组合中有多少玩家和对手的筹码。我使用的方法如下(在psuedocodish中):

我有1个板的所有可能的四个列表(ComboList)=表格==> [[A,B,C,D]|Rest]。 我有1个第一个玩家的所有动作列表(List1)=形式==> [[1],[7],[14]] 并且1为对手的动作(List2)。

步骤1:从ComboList获取第一个组合,2: 检查所有List1以查看此组合中有多少,3: 检查所有List2以查看此组合中有多少个, 从ComboList转到下一个组合并重新开始......

这个过程需要花费太多的运行时间。

请有人建议更好,更高效的东西!非常感谢提前!

1 个答案:

答案 0 :(得分:0)

以下代码使用member / 3,它也将成为 被称为nth1 / 3。见这里:

 http://storage.developerzen.com/fourrow.pro.txt

现在可以在库(列表)中找到谓词并且具有 可能是原生支持或快速实施:

 http://www.swi-prolog.org/pldoc/man?predicate=nth1/3

但我想断言一些事实并依赖于论证 索引可能会让您获得更好的结果。看看 例如:

 http://www.mxro.de/applications/four-in-a-row

希望这有帮助。

再见