Advertisement
Guest User

v

a guest
Dec 21st, 2014
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.17 KB | None | 0 0
  1. import java.util.Arrays; MONITORIAAT
  2. import java.util.Scanner;
  3.  
  4.  
  5. public class Sudoku141219 {
  6. static Scanner sc;
  7. static int[][] m; //declaratie op kasse niveau
  8.  
  9.  
  10. public static void main(String[] args) {
  11. // TODO Auto-generated method stub
  12. m= new int[9][9]; //initialisatie
  13. m = leesSudokuIn();
  14. System.out.println(controleerSudoku(m));
  15. }
  16.  
  17. public static int[][] leesSudokuIn(){
  18. /*
  19. System.out.println("geef elementen in: ");
  20. for(int i =0; i <m.length;i++){
  21. for(int j=0; j<m[i].length; j++){
  22. m[i][j]=sc.nextInt();
  23. }
  24. }*/
  25. int[] rij1={8,3,5,4,1,6,9,2,7};
  26. int[] rij2={2,9,6,8,5,7,4,3,1};
  27. int[] rij3 ={4,1,7,2,9,3,6,5,8};
  28. int[] rij4={5,6,9,1,3,4,7,8,2};
  29. int[] rij5={1,2,3,6,7,8,5,4,9};
  30. int[] rij6={7,4,8,5,2,9,1,6,3};
  31. int[] rij7={6,5,2,7,8,1,3,9,4};
  32. int[] rij8={9,8,1,3,4,5,2,7,6};
  33. int[] rij9 ={3,7,4,9,6,2,8,1,5};
  34.  
  35. m[0]=rij1;
  36. m[1]=rij2;
  37. m[2]=rij3;
  38. m[3]=rij4;
  39. m[4]=rij5;
  40. m[5]=rij6;
  41. m[6]=rij7;
  42. m[7]=rij8;
  43. m[8]=rij9;
  44.  
  45. return m;
  46.  
  47. }
  48.  
  49. public static int[][] transponeer(int[][] m){
  50. int aantalRijen = m.length;
  51. int aantalKolommen = m[0].length;
  52.  
  53.  
  54. int[][] getransponeerd = new int[aantalKolommen][aantalRijen];
  55.  
  56. for(int i=0; i<aantalRijen; i++){
  57. for(int j = 0; j<aantalKolommen; j++){
  58. getransponeerd[j][i]=m[i][j];
  59. }
  60. }
  61.  
  62.  
  63. return getransponeerd ;
  64.  
  65. }
  66.  
  67. public static void printMatrix (int[][] m){
  68. int aantalRijen = m.length;
  69. int aantalKolommen = m[0].length;
  70.  
  71. for(int i = 0; i<aantalRijen; i++){
  72. for(int j =0; j<aantalKolommen;j++){
  73. System.out.print(m[i][j]+" \t ");
  74. }
  75. System.out.println();
  76. }
  77.  
  78. }
  79.  
  80. public static boolean controleerVoorkomensInRij(int[] rij){
  81. boolean rijOk = true;
  82. int[] hulp = new int[rij.length];
  83. for(int i =0; i<rij.length;i++){
  84. hulp[i]=rij[i];
  85. }
  86. Arrays.sort(hulp);
  87.  
  88. for(int i =0; i <rij.length-1; i++){
  89.  
  90. if(hulp[i]+1!=hulp[i+1]){
  91. rijOk=false;
  92. }
  93. }
  94.  
  95. return rijOk;
  96.  
  97. }
  98.  
  99. public static void printRij(int[] rij){
  100. for(int i =0; i<rij.length;i++){
  101. System.out.print(rij[i]+" \t");
  102. }
  103. System.out.println();
  104. }
  105.  
  106. public static boolean controleerDeelMatrix(int[][] m,int rijIndex,int kolomIndex){
  107. System.out.println("deelmatrix, rijindex: "+rijIndex+" en kolomindex:" +kolomIndex);
  108.  
  109. int[][] deelmatrix = new int[3][3];
  110.  
  111. for(int i =0; i<3;i++){
  112. for(int j=0;j<3;j++){
  113. deelmatrix[i][j]=m[rijIndex+i][kolomIndex+j];
  114. }
  115. }
  116. printMatrix(deelmatrix);
  117.  
  118. return controleerVoorkomensInRij(vormMatrixOmTotRij(deelmatrix));
  119.  
  120. }
  121.  
  122. public static int[] vormMatrixOmTotRij(int[][] m){
  123.  
  124. int lengte = m.length*m[0].length;
  125. int[] rij = new int[lengte];
  126. int index = 0;
  127. for(int i=0; i<m.length;i++){
  128. for(int j=0;j<m[0].length;j++){
  129. rij[index]=m[i][j];
  130. index++;
  131. }
  132. }
  133. return rij ;
  134.  
  135.  
  136. }
  137.  
  138. public static boolean controleerSudoku(int[][] m){
  139. boolean sudokuOk = true;
  140. //int[][] hulp = m;
  141. printMatrix(m);
  142. //alle rijen dienen ok te zijn
  143. for(int i =0; i<m.length;i++){
  144. if(!Sudoku141219.controleerVoorkomensInRij(m[i])){
  145. sudokuOk = false;
  146. }
  147. }
  148. //printMatrix(m);
  149.  
  150. System.out.println("zijn rijen ok? "+ sudokuOk);
  151.  
  152. //printMatrix(transponeer(m));
  153.  
  154. int[][] getransponeerd = transponeer(m);
  155.  
  156. for(int i =0; i<getransponeerd.length;i++){
  157. if(!Sudoku141219.controleerVoorkomensInRij(getransponeerd[i])){
  158. System.out.println("het probleem doet zich voor tijdens stap "+i);
  159. sudokuOk = false;
  160. }
  161. }
  162. System.out.println("zijn kolommen ok? "+ sudokuOk);
  163.  
  164. int startIndexRij=0, startIndexKolom=0;
  165. int[] omzettingNaarRij = new int[9];
  166.  
  167. int rijIndex=0;
  168. int kolomIndex =0;
  169.  
  170. for(int i =0; i<3;i++){
  171. for(int j =0;j<3;j++){
  172. if(!controleerDeelMatrix(m,rijIndex,kolomIndex)){
  173. sudokuOk=false;
  174. System.out.println("er doet zich probleem voor in een deelmatrix!");
  175. }
  176. kolomIndex = kolomIndex +3;
  177.  
  178. }
  179. rijIndex = rijIndex + 3;
  180. kolomIndex =0;
  181. }
  182. System.out.println("zijn deelmatrices ok? "+ sudokuOk);
  183. return sudokuOk;
  184. }
  185.  
  186.  
  187.  
  188.  
  189. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement