MiniZinc中的字符串变量和dictionary输出



我有一个MiniZinc程序,其中的变量大多是整数。输出看起来像

DELPECH            [4, 5, 7, 10, 11]
DELPORTE           [2, 3, 6, 8, 10]    
DELROT         [1, 2, 3, 6, 7] 
DELRUE         [2, 3, 5, 7, 10]

底层代码看起来像

output([
join([name[ss, 1] ++ 
show([tt | tt in TOPICS where topicSelected[ss,tt]]) ++ ""
| ss in STUDENTS])]);

问题是,数字(在1和11之间(实际上对应于调度问题中的主题选择,并且我希望在最终输出中这样显示它们,即应用看起来像1->quot;"历史";,2->quot;数学";,等

我曾计划为每个学生课程定义一个数组[ss],其中包含相应主题的名称,但我认为不可能创建可变字符串数组。有好的方法吗?

不支持var string类型的变量。但是您可以使用var变量对字符串常量数组进行索引:
array[int] of string: a = ["abra", "ka", "dabra"];
output [ "n(a[i]) " ++ show(a[i]) | i in 1..3];

我不知道如何避免字符串输出中的引号。

最新更新