Advertisement
Guest User

sudoku

a guest
Dec 16th, 2012
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.20 KB | None | 0 0
  1. import java.util.Random;
  2. public class Main {
  3. static final int n=9;        //taka pomocnicza stala
  4.  
  5.         public static int dodawaj(int x){        //dodawanie liczby                  
  6.                 if (x==9)
  7.                         x=1;
  8.                 else x++;
  9.            return x;  
  10.  
  11. }
  12.         public static int losowanieliczby(int x){ //losujemy liczbe
  13.                 Random r = new Random();
  14.                 x=r.nextInt(n)+1;
  15.                 return x;
  16.         }
  17.         public static int sprawdzaniepoziom(int indeks, int tab[]){        //sprawdzenie w poziomie
  18.                 int czyprawda=1;
  19.                 int licznik=(indeks%n); //ile pol ma sie cofac i sprawdzac                
  20.                 if (licznik==0) return czyprawda; //wykonywanie sprawdzenia
  21.                         else
  22.                                 for (int i=indeks-licznik; i<indeks; i++){
  23.                                         if (tab[indeks]==tab[i]) {return czyprawda=0;}
  24.                                 }
  25.                 return czyprawda;
  26.         }
  27.         public static int sprawdzaniekomorki(int indeks, int tab[]){ //sprawdzenie komorki
  28.                 int czyprawda=1;
  29.                 if ((indeks%9)%3==0 && (indeks/9)%3==0) return czyprawda;
  30.                 if ((indeks%9)%3==1 && (indeks/9)%3==0){ if (tab[indeks]==tab[indeks-1]) return czyprawda=0;}
  31.                 if ((indeks%9)%3==2 && (indeks/9)%3==0){ if (tab[indeks]==tab[indeks-1] || tab[indeks]==tab[indeks-2]) return czyprawda=0;}
  32.                 if ((indeks%9)%3==0 && (indeks/9)%3==1){ if (tab[indeks]==tab[indeks-9] || tab[indeks]==tab[indeks-8] || tab[indeks]==tab[indeks-7]) return czyprawda=0;}
  33.                 if ((indeks%9)%3==1 && (indeks/9)%3==1){ if (tab[indeks]==tab[indeks-1] || tab[indeks]==tab[indeks-10] || tab[indeks]==tab[indeks-9] || tab[indeks]==tab[indeks-8]) return czyprawda=0;}
  34.                 if ((indeks%9)%3==2 && (indeks/9)%3==1){ if (tab[indeks]==tab[indeks-1] || tab[indeks]==tab[indeks-2] || tab[indeks]==tab[indeks-11] || tab[indeks]==tab[indeks-10] || tab[indeks]==tab[indeks-9]) return czyprawda=0;}
  35.                 if ((indeks%9)%3==0 && (indeks/9)%3==2){ if (tab[indeks]==tab[indeks-9] || tab[indeks]==tab[indeks-8] || tab[indeks]==tab[indeks-7] || tab[indeks]==tab[indeks-18] || tab[indeks]==tab[indeks-17] || tab[indeks]==tab[indeks-16]) return czyprawda=0;}
  36.                 if ((indeks%9)%3==1 && (indeks/9)%3==2){ if (tab[indeks]==tab[indeks-1] ||tab[indeks]==tab[indeks-10] || tab[indeks]==tab[indeks-9] || tab[indeks]==tab[indeks-8] || tab[indeks]==tab[indeks-19] || tab[indeks]==tab[indeks-18] || tab[indeks]==tab[indeks-17]) return czyprawda=0;}
  37.                 if ((indeks%9)%3==2 && (indeks/9)%3==2){ if (tab[indeks]==tab[indeks-1] ||tab[indeks]==tab[indeks-2]  ||tab[indeks]==tab[indeks-11] || tab[indeks]==tab[indeks-10] || tab[indeks]==tab[indeks-9] || tab[indeks]==tab[indeks-20] || tab[indeks]==tab[indeks-19] || tab[indeks]==tab[indeks-18]) return czyprawda=0;}
  38. return czyprawda;
  39.         }
  40.         public static int sprawdzaniepion(int indeks, int tab[]){ //sprawdzenie w poionie
  41.                 int czyprawda=1;
  42.                 int licznik=indeks/n;        
  43.                 int y=indeks;
  44.                 if (licznik==0) return czyprawda;                
  45.                         else
  46.                                 for (int i=0; i<licznik; i++){        
  47.                                         y=indeks-9;
  48.                                         if (tab[indeks]==tab[y]) {return czyprawda=0;}                                        
  49.                                 }
  50.                 return czyprawda;
  51.         }
  52.  
  53.         public static class Sprawdzarka{
  54.                 static int y=0;                
  55.                 static int czyok=0;
  56.         public static  int[]alggeneruj(int tab[], int indeks){        
  57.                         czyok=0;
  58.                         while(y!=9){
  59.                         if (sprawdzaniepoziom(indeks, tab)==0 || sprawdzaniekomorki(indeks, tab)==0 || sprawdzaniepion(indeks, tab)==0){
  60.                                 tab[indeks]=dodawaj(tab[indeks]);
  61.                                                 y++;
  62.                                 alggeneruj(tab, indeks);
  63.                         }else{y=0; czyok=1; return tab;}
  64.                 }
  65.                 y=0; czyok=0; return tab;
  66.  
  67.         }
  68.                 }
  69.  
  70.         public static void main(String args[]){                        
  71.                 int tab[] = new int [n*n];                        
  72.                 int indeks=0;                        
  73.                 while (indeks!=81){
  74.                         tab[indeks]=losowanieliczby(tab[indeks]);                
  75.                         tab=Sprawdzarka.alggeneruj(tab, indeks);                        
  76.                         if (Sprawdzarka.czyok==0){                                
  77.                                 indeks--;
  78.                                 while (Sprawdzarka.czyok!=1) {tab=Sprawdzarka.alggeneruj(tab, indeks);};
  79.                         }
  80.                         indeks++;
  81.                 }
  82.                 for (int j=0; j<81; j++){if (j%9==0)System.out.println();
  83.                         System.out.print(tab[j]);}
  84.  
  85.  
  86.                 }
  87.  
  88.  
  89.  
  90.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement