如何在 minizinc 程序的输出中编写条件表达式?

How can I write conditional expression in output of a minizinc program?

我有以下代码:

output["\(w) \(l)\n\(n)\n"] ++ [if rotation[i] then "\(x[i]) \(y[i]) \(p_x[i]) \(p_y[i]) R\n" else "\(x[i]) \(y[i]) \(p_x[i]) \(p_y[i])\n" endif |i in CIRCUITS];

我的目的是打印每一行和值“R”是否 rotation[i] 为真,否则为假。 例如:

w l
n
x[1] y[1] p_x[1] p_y[1] "R"
x[2] y[2] p_x[2] p_y[2]

在此示例中,旋转[1]为真,旋转[2]为假

您的示例 MiniZinc 代码就快完成了。如果使用内置函数“fix”强制“旋转”变量获取其“解决方案值”,则必须进行重要更改。

output ["\(w) \(l)\n\(n)\n"]
    ++ ["\(x[i]) \(y[i]) \(p_x[i]) \(p_y[i])" 
        ++ if fix(rotation[i]) then " R" else "" endif
        ++ "\n" 
       | i in index_set(rotation)];

此外,我建议尝试使条件部分尽可能小以提高可读性,如上述代码片段中所包含的那样。