Sudokulöser

Status
Nicht offen für weitere Antworten.

babuschka

Top Contributor
So das hier soll ein Sudokulöser sein allerdings versagt er an einer Stelle immer vllt hat ja von euch einer ne idee :)
Code:
public class Sudoku
{
int [] [] [] Sudoku = new int [10] [10] [10];
private int Anzahl_Zahlen=0;
public void Sudoku()
{
while (Anzahl_Zahlen<81)
{
    for (int Reihe=1;Reihe<=9;Reihe++)
    {
        for (int Position=1;Position<=9;Position++)
        {
            if (Sudoku [Reihe] [Position] [0]==0)
            {
                if (nurnoch_1_wert(Reihe, Position)>1)
                {
                    for (int i=1;i<=9;i++) // Überprüfung Reihe
                    {
                        int p = Sudoku [Reihe] [i] [0];
                        if (p > 0)
                        {
                        Sudoku [Reihe] [Position] [p]=0;
                        }
                    }
                    for (int j=1;j<=9;j++) // Überprüfung Spalte
                    {
                        int q = Sudoku [j] [Position] [0];
                        if (q >0)
                        {
                            Sudoku [Reihe] [Position] [q]=0;
                        }
                    }
                    int k1=7;
                    int k2=7;
                    if (Reihe==1 || Reihe==2 || Reihe == 3)
                    {k1=1;}
                    if (Reihe==4 || Reihe==5 || Reihe == 6)
                    {k1=4;}

                    if (Position==1 || Position==2 || Position == 3)
                    {k2=1;}
                    if (Position==4 || Position==5 || Position == 6)
                    {k2=4;}

                    int lala=k1;
                    for (int k=k2;k<k2+3;k++) // Überprüfung Kästchen(3x3)
                    {
                        if (k==k2+2 && k1<lala+2)
                        {k=k2; k1++;}
                        if (Sudoku [k1] [k] [0] != 0)
                        {
                            Sudoku [Reihe] [Position] [Sudoku [k1] [k] [0]]=Sudoku [k1] [k] [0];
                        }
                    }
                }
                else
                {
                    // IST DIESER BLOCK RICHTIG???????
                    Sudoku [Reihe] [Position] [0]= Sudoku [Reihe] [Position] [welche_stelle(Reihe, Position)];
                    Anzahl_Zahlen++;
                }
            }

        }
    }
  
}
int scheissprog=1;
int zZz=1;
while (zZz<10)
{
System.out.println ();
System.out.print(Sudoku [zZz] [scheissprog] [0]);
System.out.println ();
scheissprog++;
if (scheissprog >9)
{
zZz++;
scheissprog=1;
}

}
}
public void rest_füllen()
    {
        int a=1;
        for (int i=1;i<10;i++)  
        {
            
            if (Sudoku [a] [i] [0]<1)
            {
                for (int j=1;j<=9;j++)
                {
                    Sudoku [a] [i] [j]=j;
                }
            }
        
            if (i==9&&a<9)
            {
                i=1;
                a++;
            }
        }
    }
public void Sudoku_füllen(int a,int b, int c,int d,int e,int f, int g,int h, int i,int j)
{
if (b>0){Anzahl_Zahlen++;}
if (c>0){Anzahl_Zahlen++;}
if (d>0){Anzahl_Zahlen++;}
if (e>0){Anzahl_Zahlen++;}
if (f>0){Anzahl_Zahlen++;}
if (g>0){Anzahl_Zahlen++;}
if (h>0){Anzahl_Zahlen++;}
if (i>0){Anzahl_Zahlen++;}
if (j>0){Anzahl_Zahlen++;}

Sudoku [a] [1] [0]=b;
Sudoku [a] [2] [0]=c;
Sudoku [a] [3] [0]=d;
Sudoku [a] [4] [0]=e;
Sudoku [a] [5] [0]=f;
Sudoku [a] [6] [0]=g;
Sudoku [a] [7] [0]=h;
Sudoku [a] [8] [0]=i;
Sudoku [a] [9] [0]=j;
}

public int nurnoch_1_wert(int a, int b)
    {
    int c=0;
    for (int i =1;i<=9;i++)
    {
        if (Sudoku [a] [b] [i] > 0)
        c++;
    }
    return c;
    }
public int welche_stelle(int a, int b)
    {
        int c=0;    
        for (int i=1;i<=9;i++)
        {
            if (Sudoku [a] [b] [i] >0)
            {
                c=i;
                i=10;
            }
        }
        return c;
    }
}
 

Marcel_Handball

Bekanntes Mitglied
Ich habe mir deinen Code nicht im Detail angeschaut, da es wohl eine Ewigkeit dauern würde, sich dort rein zu denken.
Aber scheint mir deine Vorgehensweise nicht die Beste (wenn ich den Code richtig verstanden habe)
Ich habe selbst einmal versucht einen Sudoku Löser zu schreiben (möchte aber hier nicht die 500 Zeilen posten). Ich
bin im Nachhinein auf folgende Seite gestoßen:

]www.scanraid.com/sudoku.htm?bd=347000001962451783518000400426385000851000006739000800285976004604000020103500008

Diese Methoden, bzw. Vorgehensweise ist vergleichsweise einfacher umzusetzen und wohl effizienter.

Noch eine Anmerkung: Variablen klein schreiben.
 

NTB

Bekanntes Mitglied

Trullutrallala! Winke, winke!
Oh ohhhhh
Ahhhhhhhhhhhhhhhhhhhhhh uiuiuiuiui
teletubbies.jpg
 
G

Gelöschtes Mitglied 5909

Gast
Code:
scheissprog++;
if (scheissprog >9)
{
zZz++;
scheissprog=1;
}

da hat aber einer spaß :D
 

Leroy42

Top Contributor
Noch nicht mal richtig deutsch :(

Code:
scheißprog++; 
if (scheißprog >9) 
{ 
zZz++; 
scheißprog=1; 
}

@NTB: *LOL*
 

Leroy42

Top Contributor
Hobbit_Im_Blutrausch hat gesagt.:
na, ma verwendet aber keine Sonderzeichen wie ß in Variablennamen @Leroy ;)

Nicht schon wieder diese Grundsatzdiskussion :(

In Klassennamen, Interfacenamen und package-Namen benutze ich auch keine Sonderzeichen.

Allerdings lasse ich mir den Variablennamen
Code:
int € = 0;
für lokale Variablen nicht nehmen; hat irgendwie was... :D
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben