小编Zer*_*ro3的帖子

MiniZinc 数组中字符串值的索引

问题

给定一个 MiniZinc 字符串数组:

int: numStats;
set of int: Stats = 1..numStats;
array[Stats] of string: statNames;
Run Code Online (Sandbox Code Playgroud)

...从 MiniZinc 数据文件加载数据:

numStats = 3;
statNames = ["HEALTH", "ARMOR", "MANA"];
Run Code Online (Sandbox Code Playgroud)

如何在数组中查找特定字符串的索引?例如,ARMOR 位于位置 2。

上下文

我需要根据统计数据的一些限制找到最佳的项目选择。此信息存储在一个二维数组中,声明如下:

int: numItems;
set of int: Items = 1..numItems;
array[Items, Stats] of float: itemStats;
Run Code Online (Sandbox Code Playgroud)

因此,为了对通过所选项目获得的最小 ARMOR 数量编写约束,我需要知道 ARMOR 在内部数组中的索引为 2。

由于数据文件是由外部程序生成的,并且统计信息的数量和顺序是动态的,因此我无法对约束中的索引进行硬编码。

一种解决方案(在我的情况下不起作用)

MiniZinc教程使用了一个有趣的技巧来实现类似的东西:

set of int: Colors = 1..3;
int: red = 1;
int: yellow = 2;
int: blue = 3;
array[Colors] of string: name = ["red", …
Run Code Online (Sandbox Code Playgroud)

constraints minizinc

3
推荐指数
1
解决办法
2232
查看次数

标签 统计

constraints ×1

minizinc ×1