Advertisement
Guest User

Untitled

a guest
Nov 19th, 2019
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.85 KB | None | 0 0
  1. /*********************************************
  2. * OPL 12.9.0.0 Model
  3. * Author: vince
  4. * Creation Date: 19 nov. 2019 at 08:58:14
  5. *********************************************/
  6. using CP;
  7.  
  8. int N = 9;
  9. range numbers = 1..N;
  10. int input[numbers][numbers] = ...;
  11.  
  12. int NBlock = 2;
  13. range numbersBlock = 0..NBlock;
  14.  
  15.  
  16. dvar int sol[numbers][numbers] in numbers;
  17.  
  18. subject to {
  19. forall(line, col in numbers){
  20. if(input[line][col] != 0){
  21. sol[line][col] == input[line][col];
  22. }
  23.  
  24. // Un chiffre par ligne
  25. allDifferent(all (i in numbers) sol[line][i] );
  26.  
  27. //Un chiffre par colonne
  28. allDifferent(all (i in numbers) sol[i][col] );
  29.  
  30. //Un chiffre par sous-carré
  31. forall(lineBlock, colBlock in numbersBlock){
  32. allDifferent(all (i in numbersBlock, j in numbersBlock) sol[lineBlock * 3 + i + 1][colBlock * 3 + j + 1] );
  33. }
  34.  
  35. }
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement