%% %% Lparse program for latin_square problem %% % Domain % num(1..n). % Each block has exactly one value 1{ square(R,C,V) : num(V) } 1 :- num(R;C). % Each value occurs exactly once in each row 1{ square(R,C,V) : num(C) } 1 :- num(R;V). % Each value occurs exactly once in each column 1{ square(R,C,V) : num(R) } 1 :- num(C;V). % Assignment of the pre-assigned blocks % square(R,C,V) :- preassigned(R,C,V). [ square(R,C,V) : num(C;V) = weight(blockwt(R,C,V)) ] w :- num(R).