Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
966 B · 35 lines
at develop
123456789101112131415161718192021222324252627282930313233343536% magicsq.mzn.model% vim: ft=zinc ts=4 sw=4 et tw=0%% A model for magic square problems.include "globals.mzn";int: n; % The length of side of the square.int: s = (n * (n * n + 1)) div 2; % The Magic Constant - see % http://mathworld.wolfram.com/MagicSquare.htmlarray [1..n, 1..n] of var 1..(n * n): a;% Every square must have a different value.constraint all_different (r, c in 1..n) (a[r, c]);% Every row, column, and major diagonal must sum to the Magic Constant.constraint forall (c in 1..n) (sum (r in 1..n) (a[r, c]) = s);constraint forall (r in 1..n) (sum (c in 1..n) (a[r, c]) = s);constraint sum (i in 1..n) (a[i, i]) = s;constraint sum (i in 1..n) (a[i, n + 1 - i]) = s;% Any solution will do.solve satisfy;output [ show_int(floor(log10(int2float(n * n))) + 1, a[r, c]) ++ if c = n then "\n" else " " endif | r, c in 1..n];