これを MiniZinc でコンパイルするように修正するにはどうすればよいですか。
output [[show (P[j,p]) ++ "\n" | p in 1 .. 4] | j in 1 .. 4];
いくつかの方法を試しました。
それはあなたが何をしたいかによります。P を行列として記述するいくつかの異なるアプローチを次に示します。最初のものは行列をリスト ([...]) として書き込み、2 番目のものは単に値を出力します。
output [
show([P[j,p] | p in 1 .. 4]) ++ "\n"
| j in 1 .. 4
];
output [
if p = 1 then "\n" else " " endif ++
show(P[j,p])
| j in 1 .. 4, p in 1 .. 4
];
更新: MiniZinc 2.0 (少なくともかなり最近の Git バージョン) では、show2d 述語が追加されました。
output [ show2d(P)];