Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Random;
- public class Main {
- static final int n=9; //taka pomocnicza stala
- public static int dodawaj(int x){ //dodawanie liczby
- if (x==9)
- x=1;
- else x++;
- return x;
- }
- public static int losowanieliczby(int x){ //losujemy liczbe
- Random r = new Random();
- x=r.nextInt(n)+1;
- return x;
- }
- public static int sprawdzaniepoziom(int indeks, int tab[]){ //sprawdzenie w poziomie
- int czyprawda=1;
- int licznik=(indeks%n); //ile pol ma sie cofac i sprawdzac
- if (licznik==0) return czyprawda; //wykonywanie sprawdzenia
- else
- for (int i=indeks-licznik; i<indeks; i++){
- if (tab[indeks]==tab[i]) {return czyprawda=0;}
- }
- return czyprawda;
- }
- public static int sprawdzaniekomorki(int indeks, int tab[]){ //sprawdzenie komorki
- int czyprawda=1;
- if ((indeks%9)%3==0 && (indeks/9)%3==0) return czyprawda;
- if ((indeks%9)%3==1 && (indeks/9)%3==0){ if (tab[indeks]==tab[indeks-1]) return czyprawda=0;}
- if ((indeks%9)%3==2 && (indeks/9)%3==0){ if (tab[indeks]==tab[indeks-1] || tab[indeks]==tab[indeks-2]) return czyprawda=0;}
- 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;}
- 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;}
- 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;}
- 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;}
- 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;}
- 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;}
- return czyprawda;
- }
- public static int sprawdzaniepion(int indeks, int tab[]){ //sprawdzenie w poionie
- int czyprawda=1;
- int licznik=indeks/n;
- int y=indeks;
- if (licznik==0) return czyprawda;
- else
- for (int i=0; i<licznik; i++){
- y=indeks-9;
- if (tab[indeks]==tab[y]) {return czyprawda=0;}
- }
- return czyprawda;
- }
- public static class Sprawdzarka{
- static int y=0;
- static int czyok=0;
- public static int[]alggeneruj(int tab[], int indeks){
- czyok=0;
- while(y!=9){
- if (sprawdzaniepoziom(indeks, tab)==0 || sprawdzaniekomorki(indeks, tab)==0 || sprawdzaniepion(indeks, tab)==0){
- tab[indeks]=dodawaj(tab[indeks]);
- y++;
- alggeneruj(tab, indeks);
- }else{y=0; czyok=1; return tab;}
- }
- y=0; czyok=0; return tab;
- }
- }
- public static void main(String args[]){
- int tab[] = new int [n*n];
- int indeks=0;
- while (indeks!=81){
- tab[indeks]=losowanieliczby(tab[indeks]);
- tab=Sprawdzarka.alggeneruj(tab, indeks);
- if (Sprawdzarka.czyok==0){
- indeks--;
- while (Sprawdzarka.czyok!=1) {tab=Sprawdzarka.alggeneruj(tab, indeks);};
- }
- indeks++;
- }
- for (int j=0; j<81; j++){if (j%9==0)System.out.println();
- System.out.print(tab[j]);}
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement