public class Test
{
public static void main (String[] args)
{
int koordinate[][] = {
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9} };
int kaestchen[][] = new int[9][9];
int spalte = 0;
int zeile = 0;
int element = 0;
int count = 0;
int count2 = 0;
int i = 0;
int spaltenanfang = 0;
int spaltenende = 2;
int zeilenanfang = 0;
int zeilenende = 2;
boolean isZeile = true ; // 1 gilt als Definition von wahr
boolean isSpalte = true ;
boolean isKaestchen = true ;
//leseEingaben(zeile,spalte, element,koordinate);
//pruefe_doppeltesVorkommen_in_Zeile(zeile,spalte, element,koordinate,isZeile);
// pruefe_doppeltesVorkommen_in_Spalte( zeile, spalte, element, koordinate, isSpalte);
pruefe_doppeltesVorkommen_in_dreimaldrei_Kaestchen(zeile, spalte, koordinate, kaestchen, count, count2, i,
spaltenende,spaltenanfang,zeilenende, zeilenanfang, element, isKaestchen);
pruefe_Ergebnisse(isZeile, isSpalte,isKaestchen);
}
public static void leseEingaben(int zeile, int spalte, int element, int koordinate[][])
{
for(zeile = 0; zeile <= 8; zeile++)
{
for (spalte = 0; spalte <= 8; spalte++)
{
System.out.print(koordinate[zeile][spalte] + " ");
}
System.out.println("");
spalte = 0;
}
}
// hier könnte noch eine Bedingeung rein, damit nur Zahlen von 1 bis 9 eine richtige Eingabe sind
public static boolean pruefe_doppeltesVorkommen_in_Zeile(int zeile, int spalte, int element, int koordinate[][], boolean
isZeile)
{
zeile = 0;
element = 0;
for(zeile = 0; zeile <= 8; zeile++)
{
for (element = 0; element <= 8; element++)
{
for(spalte = 0; spalte <= 8; spalte++)
{
if(koordinate[zeile][element] == koordinate[zeile][spalte] && spalte != element)
{
return false;
break;
}
if(koordinate[zeile][element] != koordinate[zeile][spalte])
{
System.out.println("Zahl in Zeile " + (zeile + 1) + " und Spalte " + (spalte + 1) + " ist ungleich der Zahl in Spalte " + (element + 1));
}
}
}
}
}
public static boolean pruefe_doppeltesVorkommen_in_Spalte(int zeile, int spalte, int element, int koordinate[][], boolean
isSpalte)
{
zeile = 0;
spalte = 0;
element = 0;
for(spalte = 0; spalte <= 8; spalte++)
{
for(element = 0; element <= 8; element++)
{
for(zeile = 0; zeile <= 8; zeile++)
{
if(koordinate[zeile][spalte] == koordinate[element][spalte] && zeile != element )
{
return false;
break;
}
if(koordinate[zeile][spalte] != koordinate[element][spalte])
{
System.out.println("Die Zahl in Spalte " + (spalte+1) + "und Zeile" + (zeile+1) + "ist UNGLEICH der Zahl in Zeile" + (element+1));
}
}
}
}
}
public static boolean pruefe_doppeltesVorkommen_in_dreimaldrei_Kaestchen(int zeile, int spalte, int koordinate[][], int kaestchen[][], int count, int count2, int i, int spaltenanfang,int spaltenende, int zeilenanfang, int zeilenende, int element,boolean isKaestchen)
{
zeile = 0;
spalte = 0;
count = 0;
count2 = 0;
i = 0;
spaltenanfang = 0;
spaltenende = 2;
zeilenanfang = 0;
zeilenende = 2;
// Hier muss so schnell wie möglich ein vernünftiger Algorithmus hinne!!!
for(count = 0; count <= 8; count++)
{
for(zeile = 0; zeile <= 2; zeile++)
{
for(spalte = spaltenanfang; spalte <= spaltenende; spalte++)
{
kaestchen[count2][i] = koordinate[zeile][spalte];
// System.out.print(kaestchen[count][i]);
i++;
}
}
count2++;
i = 0;
if(spaltenende <= 8)
{spaltenanfang += 3;
spaltenende += 3;
if(spaltenende > 8)
{
zeilenanfang += 3;
spaltenanfang = 0;
spaltenende = 2;
}
}
}
for(count = 0; count <= 8; count++)
{
for(element = 0; element <= 8; element++)
{
for(count2 = 0; count2 <= 8; count2++)
{
if(kaestchen[count][element] == kaestchen[count][count2] && element != count2)
{
return false;
break;
}
}
}
}
}
public static void pruefe_Ergebnisse(boolean isZeile, boolean isSpalte, boolean isKaestchen)
{
isZeile = pruefe_doppeltesVorkommen_in_Zeile(zeile, spalte, element, koordinate, isZeile);
isSpalte = pruefe_doppeltesVorkommen_in_Spalte(zeile, spalte, element, koordinate, isSpalte);
isKaestchen = pruefe_doppeltesVorkommen_in_dreimaldrei_Kaestchen( zeile,spalte, koordinate, kaestchen, count, count2, i, spaltenanfang, spaltenende, zeilenanfang, zeilenende, element, isKaestchen);
if(isZeile == false || isSpalte == false|| isKaestchen == false)
{
System.out.println("Das Sudoku enthält einen Fehler");
}
else
{
System.out.println("Das Sudoku wurde erfolgreich gelöst");
}
}
}