Chciałbym napisać prosty program który będzie rozwiązywał łatwe tablice sudoku w javie. Napisałem do tego momentu i program wypełnia tablice ale robi błędy. Będę wdzięczny za każdą pomoc. Jak pisałem mój program ma znajdować rozwiązanie prostych tablic (nie musi znajdować ilości rozwiązań- jeśli dana tablica ma kilka rozwiązań). Czekam na jakieś wskazówki i opinie. Jestem początkujący więc krytyka mile widziana.
package Sudoku;
import java.util.*;
class Sudoku
{
int[][] sudoku = { { 1, 4, 3, 5, 0, 0, 0, 0, 0 },
{ 0, 0, 5, 0, 0, 0, 0, 2, 0 },
{ 0, 0, 0, 0, 0, 6, 0, 0, 0 },
{ 4, 0, 0, 0, 9, 0, 7, 0, 5 },
{ 6, 0, 0, 8, 0, 3, 0, 0, 2 },
{ 9, 0, 1, 0, 7, 0, 0, 0, 8 },
{ 0, 0, 0, 2, 0, 0, 0, 0, 0 },
{ 0, 8, 0, 0, 0, 0, 2, 0, 0 },
{ 0, 0, 0, 0, 0, 8, 1, 6, 7 } };
int tab_temp[][]=new int[9][9];
public Sudoku()
{
wypelnij_temp();
wypelnij();
}
int wypelnij()
{
int a=1, liczba, licz=0;
int i2=0,j2=0;
for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
if(sudoku[i][j]==0)
{
for(a=1;a<=9;a++)
{
if(przeszukaj(i,j,a)==-1)
{
sudoku[i][j]=a;
}
}
}
}
}
return -1;
}
int wypelnij_temp()
{
int a=1, liczba, licz=0;
int i2=0,j2=0;
for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
if(sudoku[i][j]==0)
{
for(a=1;a<=9;a++)
{
if(przeszukaj(i,j,a)==-1)
{
// sudoku[i][j]=a;
tab_temp[i][j]=1;
}
}
}
}
}
return -1;
}
int przeszukaj(int y, int x, int liczba) //y wiersz, x kolumna
{
int i=0, j=0;
for(i=0;i<9;i++) // sprawdz czy liczba wystepuje w wierszu lub kolumnie
{
if(sudoku[y][i]==liczba) {
return 0;}
if(sudoku[i][x]==liczba) {
return 0;}
}
int x1, y1;
x1=3*(x/3); // poczatek kolumny kwadratu 3 na 3
y1=3*(y/3); // ..... wiersza ......
for(i=y1;i<=(y1+2);i++) // sprawdzanie czy liczba wystepuje w kwadracie.
{
for(j=x1;j<=(x1+2);j++)
{
if(sudoku[i][j]==liczba)
{
return 0;
}
}
}
return -1;
}
int czyWpisal(int i,int j)
{
if(sudoku[i][j]==0) return 0;
if(sudoku[i][j]!=0) return -1;
return 1;
}
public String wyswietl(){
String wys="";
for(int i=0;i<9;i++){
for(int j=0;j<9;j++) wys+=""+sudoku[i][j]+"\t";
wys+="\n";
}
return wys;
}
public String wyswietlTemp(){
String wys="";
for(int i=0;i<9;i++){
for(int j=0;j<9;j++) wys+=""+tab_temp[i][j]+"\t";
wys+="\n";
}
return wys;
}
}
class Glowna
{
public static void main(String[] args)
{
Sudoku s1=new Sudoku();
System.out.println(s1.wyswietl());
System.out.print(s1.wyswietlTemp());
}
}