Как я могу скомпилировать этот выходной оператор MiniZinc?

Как мне пересмотреть это для компиляции в MiniZinc:

output [[show (P[j,p]) ++ "\n" | p in 1 .. 4] | j in 1 .. 4];

Я пробовал несколько способов.


person Jim Lewis    schedule 07.02.2015    source источник


Ответы (1)


Это зависит от того, что вы хотите сделать. Вот несколько различных подходов, которые будут записывать P как матрицу. Первый записывает матрицу в виде списков ([...]), второй просто выводит значения.

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)];
person hakank    schedule 07.02.2015
comment
Я смог адаптировать это к моему большому коду, и после нескольких попыток он наконец заработал - спасибо! - person Jim Lewis; 08.02.2015