Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Arrays; MONITORIAAT
- import java.util.Scanner;
- public class Sudoku141219 {
- static Scanner sc;
- static int[][] m; //declaratie op kasse niveau
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- m= new int[9][9]; //initialisatie
- m = leesSudokuIn();
- System.out.println(controleerSudoku(m));
- }
- public static int[][] leesSudokuIn(){
- /*
- System.out.println("geef elementen in: ");
- for(int i =0; i <m.length;i++){
- for(int j=0; j<m[i].length; j++){
- m[i][j]=sc.nextInt();
- }
- }*/
- int[] rij1={8,3,5,4,1,6,9,2,7};
- int[] rij2={2,9,6,8,5,7,4,3,1};
- int[] rij3 ={4,1,7,2,9,3,6,5,8};
- int[] rij4={5,6,9,1,3,4,7,8,2};
- int[] rij5={1,2,3,6,7,8,5,4,9};
- int[] rij6={7,4,8,5,2,9,1,6,3};
- int[] rij7={6,5,2,7,8,1,3,9,4};
- int[] rij8={9,8,1,3,4,5,2,7,6};
- int[] rij9 ={3,7,4,9,6,2,8,1,5};
- m[0]=rij1;
- m[1]=rij2;
- m[2]=rij3;
- m[3]=rij4;
- m[4]=rij5;
- m[5]=rij6;
- m[6]=rij7;
- m[7]=rij8;
- m[8]=rij9;
- return m;
- }
- public static int[][] transponeer(int[][] m){
- int aantalRijen = m.length;
- int aantalKolommen = m[0].length;
- int[][] getransponeerd = new int[aantalKolommen][aantalRijen];
- for(int i=0; i<aantalRijen; i++){
- for(int j = 0; j<aantalKolommen; j++){
- getransponeerd[j][i]=m[i][j];
- }
- }
- return getransponeerd ;
- }
- public static void printMatrix (int[][] m){
- int aantalRijen = m.length;
- int aantalKolommen = m[0].length;
- for(int i = 0; i<aantalRijen; i++){
- for(int j =0; j<aantalKolommen;j++){
- System.out.print(m[i][j]+" \t ");
- }
- System.out.println();
- }
- }
- public static boolean controleerVoorkomensInRij(int[] rij){
- boolean rijOk = true;
- int[] hulp = new int[rij.length];
- for(int i =0; i<rij.length;i++){
- hulp[i]=rij[i];
- }
- Arrays.sort(hulp);
- for(int i =0; i <rij.length-1; i++){
- if(hulp[i]+1!=hulp[i+1]){
- rijOk=false;
- }
- }
- return rijOk;
- }
- public static void printRij(int[] rij){
- for(int i =0; i<rij.length;i++){
- System.out.print(rij[i]+" \t");
- }
- System.out.println();
- }
- public static boolean controleerDeelMatrix(int[][] m,int rijIndex,int kolomIndex){
- System.out.println("deelmatrix, rijindex: "+rijIndex+" en kolomindex:" +kolomIndex);
- int[][] deelmatrix = new int[3][3];
- for(int i =0; i<3;i++){
- for(int j=0;j<3;j++){
- deelmatrix[i][j]=m[rijIndex+i][kolomIndex+j];
- }
- }
- printMatrix(deelmatrix);
- return controleerVoorkomensInRij(vormMatrixOmTotRij(deelmatrix));
- }
- public static int[] vormMatrixOmTotRij(int[][] m){
- int lengte = m.length*m[0].length;
- int[] rij = new int[lengte];
- int index = 0;
- for(int i=0; i<m.length;i++){
- for(int j=0;j<m[0].length;j++){
- rij[index]=m[i][j];
- index++;
- }
- }
- return rij ;
- }
- public static boolean controleerSudoku(int[][] m){
- boolean sudokuOk = true;
- //int[][] hulp = m;
- printMatrix(m);
- //alle rijen dienen ok te zijn
- for(int i =0; i<m.length;i++){
- if(!Sudoku141219.controleerVoorkomensInRij(m[i])){
- sudokuOk = false;
- }
- }
- //printMatrix(m);
- System.out.println("zijn rijen ok? "+ sudokuOk);
- //printMatrix(transponeer(m));
- int[][] getransponeerd = transponeer(m);
- for(int i =0; i<getransponeerd.length;i++){
- if(!Sudoku141219.controleerVoorkomensInRij(getransponeerd[i])){
- System.out.println("het probleem doet zich voor tijdens stap "+i);
- sudokuOk = false;
- }
- }
- System.out.println("zijn kolommen ok? "+ sudokuOk);
- int startIndexRij=0, startIndexKolom=0;
- int[] omzettingNaarRij = new int[9];
- int rijIndex=0;
- int kolomIndex =0;
- for(int i =0; i<3;i++){
- for(int j =0;j<3;j++){
- if(!controleerDeelMatrix(m,rijIndex,kolomIndex)){
- sudokuOk=false;
- System.out.println("er doet zich probleem voor in een deelmatrix!");
- }
- kolomIndex = kolomIndex +3;
- }
- rijIndex = rijIndex + 3;
- kolomIndex =0;
- }
- System.out.println("zijn deelmatrices ok? "+ sudokuOk);
- return sudokuOk;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement