MiniZinc:在 a for all 中使用变化的索引对数组进行切片

问题描述 投票:0回答:1

我想在 Minizinc 中执行以下操作:对数组的切片设置约束,取 7 个索引并每次移动一个。我试过这样做:

constraint forall(i in 0..length(schedule)-1 - maxOn) (0 in schedule[i..i+maxOn]);

其中 schedule 是我的大小为 64 的输出数组,maxOn 是 7(天)。但是我收到以下错误:

MiniZinc: type error: array comprehension expression cannot be an array.

有什么想法吗?

在 python 中,我会使用带有数组切片的循环:

for i in range(len(schedule) - maxOn):

     my_slice = schedule[i:i+maxOn]

arrays slice minizinc
1个回答
0
投票

以下基于您编写的内容的完整代码示例在最新的 MiniZinc 中按预期工作

int: maxOn = 7;

array[0..64] of var int: schedule;

constraint forall(i in 0..length(schedule)-1 - maxOn) (
    0 in schedule[i..i+maxOn]
);
© www.soinside.com 2019 - 2024. All rights reserved.