$TITLE SUDOKU * Andres Ramos * Universidad Pontificia Comillas * Alberto Aguilera 23 * 28015 Madrid, Spain * Febrero 2006 * esta formulación garantiza que no se repitan los valores SETS I casillas / 1 * 9 / ALIAS (i,ii,j,jj,k) TABLE VALINI(i,j) valores iniciales 1 2 3 4 5 6 7 8 9 1 5 3 7 2 6 1 9 5 3 9 8 6 4 8 6 3 5 4 8 3 1 6 7 2 6 7 6 2 8 8 4 1 9 5 9 8 7 9 $ONTEXT 1 5 3 4 6 7 8 9 1 2 2 6 7 2 1 9 5 3 4 8 3 1 9 8 3 4 2 5 6 7 4 8 5 9 7 6 1 4 2 3 5 4 2 6 8 5 3 7 9 1 6 7 1 3 9 2 4 8 5 6 7 9 6 1 5 3 7 2 8 4 8 2 8 7 4 1 9 6 3 5 9 3 4 5 2 8 6 1 7 9 $OFFTEXT BINARY VARIABLE X(i,j,k) valor de la casilla VARIABLE Z variable muda EQUATIONS SUMAFILA(i,k) en cada fila y cada profundid sólo se elije una variable una vez SUMACOLUMNA(j,k) en cada columna y cada profundid sólo se elije una variable una vez SUMAPROFUND(i,j) en cada fila y cada columna sólo se elije una variable una vez SUMACAJA(i,j,k) en cada punto de cada caja sólo se elije una variable una vez MUDA muda ; SUMAFILA(i,k) .. sum[j, X(i,j,k)] =e= 1 ; SUMACOLUMNA(j,k) .. sum[i, X(i,j,k)] =e= 1 ; SUMAPROFUND(i,j) .. sum[k, x(i,j,k)] =e= 1 ; SUMACAJA(i,j,k) $[mod(ord(i),3) = 1 and mod(ord(j),3) = 1] .. sum[(ii,jj) $(ord(ii)<=3 and ord(jj)<=3), X(i+[ord(ii)-1],j+[ord(jj)-1],k)] =e= 1 ; MUDA .. z =e= 1 ; MODEL SUDOKU / all / ; X.FX(i,j,k) $[VALINI(i,j)>0 and ord(k)=VALINI(i,j)] = 1 ; SOLVE SUDOKU MINIMIZING Z USING MIP