我已经在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转到下一个组合并重新开始......
这个过程需要花费太多的运行时间。
请有人建议更好,更高效的东西!非常感谢提前!
答案 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
希望这有帮助。
再见