适合芬德尔



我有规则:

best_fit(Team, Enemies, Result, List) :-
findall((H, E), score(H, Enemies, Team, E), List),

其中分数定义为:

score(Hero, Enemies, Team, Result) :- 
hero(Hero),
...

我只想找到(H,E(,其中H不在敌人或团队中。我后来尝试过exclude,但结果是元组,使其工作有点复杂。有没有办法用findall方法把它过滤掉?我该如何处理?

您可以在目标中强制执行:

best_fit(Team, Enemies, Result, List) :-
findall((H, E), (
score(H, Enemies, Team, E),
+ member(H, Enemies),
+ member(H, Team),
), List).

因此,我们修改了目标,使其满足如果score(H, Enemies, Team, E)H不是Enemies的成员,并且H不是Team的成员。

相关内容

  • 没有找到相关文章

最新更新