array [1..16] of int: clues = [5, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 8, 0, 7, 0, 0]; array [1..4] of int: colsums = [24, 18, 31, 31]; array [1..2] of int: diagsums = [24, 24]; array [1..4] of int: rowsums = [22, 26, 31, 25]; array [1..16] of var 1..9: x :: output_array([1..4, 1..4]); constraint int_eq(5, x[1]); constraint int_eq(7, x[14]); constraint int_eq(8, x[7]); constraint int_eq(8, x[12]); constraint int_lin_eq([1, 1, 1, 1], [x[1], x[2], x[3], x[4]], 22); constraint int_lin_eq([1, 1, 1, 1], [x[1], x[5], x[9], x[13]], 24); constraint int_lin_eq([1, 1, 1, 1], [x[1], x[6], x[11], x[16]], 24); constraint int_lin_eq([1, 1, 1, 1], [x[2], x[6], x[10], x[14]], 18); constraint int_lin_eq([1, 1, 1, 1], [x[3], x[7], x[11], x[15]], 31); constraint int_lin_eq([1, 1, 1, 1], [x[4], x[7], x[10], x[13]], 24); constraint int_lin_eq([1, 1, 1, 1], [x[4], x[8], x[12], x[16]], 31); constraint int_lin_eq([1, 1, 1, 1], [x[5], x[6], x[7], x[8]], 26); constraint int_lin_eq([1, 1, 1, 1], [x[9], x[10], x[11], x[12]], 31); constraint int_lin_eq([1, 1, 1, 1], [x[13], x[14], x[15], x[16]], 25); solve satisfy;