给定一个 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)