【发布时间】:2019-10-10 01:33:58
【问题描述】:
有一个包含自变量的列表,其域为 1..N,我们如何使用 labeling/2 使其从中间开始生成解决方案?
我尝试的标志是[bisect],[enum],[max],[min],[ff],但无论我选择哪个,我都无法使其工作。
我的代码是:
:-use_module(library(clpfd)).
combos(EMPLOYEES,POSTS,LIST):-
LIMIT is POSTS-EMPLOYEES+1,
length(LIST,EMPLOYEES),
LIST ins 1..LIMIT,
sum(LIST,#=,POSTS),
labeling([bisect],LIST).
设置查询后,例如:
?-combos(2,10,LIST).
我希望它返回:
L = [5,5];
L = [4,6];
L = [6,4] ...
代替:
L = [1,9];
L = [2,8];
L = [3,7] ...
【问题讨论】:
-
投反对票,因为 TimzyPatzy 在发布答案后更改了问题,导致答案无效。 TimzyPatzy 应该接受已发布的答案并发布不同的问题。
-
我同意@false,这是一个完全不同的问题!正如您所说,您不仅对原始问题更加“具体”。您完全改变它!即使是您原始问题中的示例也与您添加的更具体的内容相矛盾!