Sudoku prüfen

Basics_Java

Mitglied
Java:
import java.util.Arrays;

public class SudokuPruefen {
    
    public static int[][] gitter = {
            {5,3,4,6,7,8,9,1,2},
            {6,7,2,1,9,5,3,4,8},
            {1,9,8,3,4,2,5,6,7},
            {8,5,9,7,6,1,4,2,3},
            {4,2,6,8,5,3,7,9,1},
            {7,1,3,9,2,4,8,5,6},
            {9,6,1,5,3,7,2,8,4},
            {2,8,7,4,1,9,6,3,5},
            {3,4,5,2,8,6,1,7,9}
    };
    public static String[] gitterAlsStrings = new String[13];
    public static boolean gitterIstRichtig = true;

public static void main(String[] args) throws Exception {               
        gitterIstRichtig = true;


+---+---+---+
|534|678|912| 
|672|195|348| 
|198|342|567| 
+---+---+---+ 
|859|761|423| 
|426|853|791| 
|713|924|856| 
+---+---+---+ 
|961|537|284| 
|287|419|635| 
|345|286|179| 
+---+---+---+

Ich würde gern mein Gitter also meine Zahlen genau so als aufbauen wollen, wie ich zeige mit der Darstellung.
Und möchte dazu noch überprüfen, ob der Versuch richtig ist und wenn er es ist, soll er mir true ausgeben.

Ich habe ein Blackout und weiß nicht wie ich anfangen soll.
Ich hoffe eine/r könnte mir behilflich werden.

Danke
 

mihe7

Top Contributor
Du musst halt zeilen- und spaltenweise feststellen, ob alle Ziffern von 1 bis 9 eingetragen sind. Edit: und natürlich auch blockweise.
 

Basics_Java

Mitglied
Du musst halt zeilen- und spaltenweise feststellen, ob alle Ziffern von 1 bis 9 eingetragen sind. Edit: und natürlich auch blockweise.
Wie fange ich denn an?
also mein Überlegung ist print +
for iterieren bis 3 mit "-" dann
print +
for iterieren bis 3 mit "-" dann
print +
for iterieren bis 3 mit "-" dann
print +
wie mach ich jetzt das Symbol "|" und dahinter die Zahlen .... und wie überprüfe ich die ?
 

httpdigest

Top Contributor
Häh? Ist jetzt deine Aufgabe, zu prüfen, ob ein gegebenes Sudoku gemäß der Sudoku-Regeln valide ist, oder sollst du einfach nur ein Sudoku als String ausgeben?
 

MoxxiManagarm

Top Contributor
ne sowas wie

Java:
public boolean check(int[] unit) { /* ... */ };

Wobei unit ein Quadratblock, eine Zeile oder Spalte sein kann. Spalte und Quadratblock musst du natürlich erst zu einem solchen Array umwandeln, Zeile kannst du direkt übergeben.Es könnten auch Indexpaare sein.
 

mihe7

Top Contributor
Also, die Frage ist doch: ist das Soduko gültig? Darauf gibt es nur zwei Antworten: ja oder nein. Für letzteres existiert der Datentyp boolean.
Java:
static boolean istSudokuGueltig(int[][] soduku) {
    boolean ergebnis;
    // ergebnis = ...
    return ergebnis;
}
Damit hätten wir schon mal das Skelett. Jetzt ist die Frage: wann ist ein Soduko gültig? Antwort: wenn in jeder Zeile, in jeder Spalte und in jedem Block alle Ziffern von 1 bis 9 genau einmal vorkommen. Jede Zeile, jede Spalte und jeder Block enthält genau 9 Ziffern. Du willst also eine Methode verwenden, die prüft, ob von 9 gegebenen Zahlen jede Ziffer von 1 bis 9 enthalten ist.

Das ist dann die von @MoxxiManagarm angesprochene check-Methode.

Java:
static boolean istSudokuGueltig(int[][] soduku) {
    boolean ergebnis = true;
    for (int zeile = 0; zeile < sodoku.length; zeile++) {
        ergebnis = ergebnis && check(sodoku[0]); 
    }   
    // ...
    return ergebnis;
}
 

Basics_Java

Mitglied
Also, die Frage ist doch: ist das Soduko gültig? Darauf gibt es nur zwei Antworten: ja oder nein. Für letzteres existiert der Datentyp boolean.
Java:
static boolean istSudokuGueltig(int[][] soduku) {
    boolean ergebnis;
    // ergebnis = ...
    return ergebnis;
}
Damit hätten wir schon mal das Skelett. Jetzt ist die Frage: wann ist ein Soduko gültig? Antwort: wenn in jeder Zeile, in jeder Spalte und in jedem Block alle Ziffern von 1 bis 9 genau einmal vorkommen. Jede Zeile, jede Spalte und jeder Block enthält genau 9 Ziffern. Du willst also eine Methode verwenden, die prüft, ob von 9 gegebenen Zahlen jede Ziffer von 1 bis 9 enthalten ist.

Das ist dann die von @MoxxiManagarm angesprochene check-Methode.

Java:
static boolean istSudokuGueltig(int[][] soduku) {
    boolean ergebnis = true;
    for (int zeile = 0; zeile < sodoku.length; zeile++) {
        ergebnis = ergebnis && check(sodoku[0]);
    }  
    // ...
    return ergebnis;
}
Mit Sudoku ist hier dann mein Gitter gemeint oder ?
 

Basics_Java

Mitglied
Java:
import java.util.Arrays;

public class SudokuPruefen {
    
    public static int[][] gitter = {
            {5,3,4,6,7,8,9,1,2},
            {6,7,2,1,9,5,3,4,8},
            {1,9,8,3,4,2,5,6,7},
            {8,5,9,7,6,1,4,2,3},
            {4,2,6,8,5,3,7,9,1},
            {7,1,3,9,2,4,8,5,6},
            {9,6,1,5,3,7,2,8,4},
            {2,8,7,4,1,9,6,3,5},
            {3,4,5,2,8,6,1,7,9}
    };
    public static String[] gitterAlsStrings = new String[13];
    public static boolean gitterIstRichtig = true;
    DESIRED_SUM = 1+2+3+4+5+6+7+8+9;
    public boolean check(int[] unit) {
        //for()
    };
    

    public static void main(String[] args) throws Exception {       
        
        gitterIstRichtig = true;
        
    /*    System.out.println(Arrays.toString(gitter));
        boolean istSudokuGueltig(int[][] gitter) {
            boolean ergebnis = true;
            for (int zeile = 0; zeile < gitter.length; zeile++) {
                ergebnis = ergebnis && check(gitter[0]);
            }   
                // ...
            return ergebnis;
            }
        */
        boolean check_sudoku(int[][] gitter) {
            if (check_rows(gitter) == gitterIstRichtig){
                System.out.println("Zeile ist richtig");
            }
                if (check_columns(gitter) == gitterIstRichtig){
                    System.out.println("Spalte ist richtig");
                }
                    if(check_squares(gitter) == gitterIstRichtig) {
                        return gitterIstRichtig;
                    }
        System.out.println(check_sudoku(gitter));
                    
            }
    
        
        private boolean check_squares(int[][] gitter) {
            // TODO Auto-generated method stub
            return false;
        }
        private boolean check_columns(int[][] gitter) {
            // TODO Auto-generated method stub
            return false;
        }
        private boolean check_rows(int[][] gitter) {
            // TODO Auto-generated method stub
            return false;
        }
        
    }

Ich weiß noch habe ich die Funktionen check_squares, check_columns und check_rows nicht ausgefüllt, aber wie fahre ich hier fort ... ich konnte mit euren Funktionen nicht klar kommen. Ich weiß gerade nicht wie ich auf das Array prüfe..
 

Basics_Java

Mitglied
Mit Sudoku ist hier dann mein Gitter gemeint oder ?
Java:
public static void main(String[] args) throws Exception {       
        //gitterIstRichtig = true;
        boolean gefunden = false;
        System.out.print("+");
        for(int a=0;a<3;a++) {
            System.out.print("-");
        }
        System.out.print("+");
        for(int b=0;b<3;b++) {
            System.out.print("-");
        }
        System.out.print("+");
        for(int c=0;c<3;c++) {
            System.out.print("-");
        }
        System.out.println("+");
        System.out.print("|");
        for(int d=0;d<gitter.length;d++) {
            if(gitter[d] == 5) {
                gefunden = true;
                break;
            }   
        }
        if(gefunden) {
            System.out.print("d");
        }
        for(int e=0;e<gitter.length;e++) {
            if(gitter[e] == 3) {
                gefunden = true;
                break;
            }
                    
            }
        
            if(gefunden) {
                System.out.print("e");
            }
        }

hab jetzt irgendwie so angefangen, konnte mit euren Funktionen nichts anfangen, ich weiß nicht wie ich vorgehen soll, das ist mein Problem. Ich weiß auch nicht, wie ich die Zahlen überprüfen soll.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Sudoku mit 2D Arrays Java Basics - Anfänger-Themen 19
S GUI-Programmierung Sudoku-Rätsel lösen Java Basics - Anfänger-Themen 1
J Sudoku mehrere Lösungen Java Basics - Anfänger-Themen 29
J Sudoku Blocküberprüfung Java Basics - Anfänger-Themen 9
S Sudoku Checker Frage Java Basics - Anfänger-Themen 1
G Sudoku Java Basics - Anfänger-Themen 3
S Methoden Java Sudoku Solver Java Basics - Anfänger-Themen 2
C Klassen Sudoku-Spiel Werte werden nicht gesetzt Java Basics - Anfänger-Themen 4
A Sudoku mit Backtracking lösen Java Basics - Anfänger-Themen 3
L Sudoku Backtracking Pseudocode Java Basics - Anfänger-Themen 3
L Sudoku Löser Java Basics - Anfänger-Themen 9
V Sudoku-Solver Probleme bei der Fehlerbehandlung Java Basics - Anfänger-Themen 12
H Unterquadrate bei Sudoku füllen Java Basics - Anfänger-Themen 9
D Sudoku lösen mit Backtracking Java Basics - Anfänger-Themen 20
M Sudoku-Löser: Fragen zu Pointer und Rekursion Java Basics - Anfänger-Themen 15
S Bisschen hilfe beim Sudoku Lösen benötigt Java Basics - Anfänger-Themen 7
X Sudoku Backtracking Java Basics - Anfänger-Themen 6
S Sudoku hilfe Java Basics - Anfänger-Themen 4
M Sudoku Rekursiv lösen Java Basics - Anfänger-Themen 9
N Sudoku/BLocküberprüfung Java Basics - Anfänger-Themen 24
F Sudoku Grid zeichnen Java Basics - Anfänger-Themen 2
C Frage zu Sudoku Java Basics - Anfänger-Themen 20
MEETyA NullPointer Exception - Sudoku Java Basics - Anfänger-Themen 2
J Sudoku-ähnliche Aufgabe Java Basics - Anfänger-Themen 3
G Sudoku rekursiv lösen Java Basics - Anfänger-Themen 10
Antoras Sudoku Java Basics - Anfänger-Themen 3
F sudoku generieren Java Basics - Anfänger-Themen 16
B Sudoku! Java Basics - Anfänger-Themen 26
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
Ostkreuz Int Scanner auf Enter Eingabe prüfen Java Basics - Anfänger-Themen 4
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
Fiedelbambu Prüfen von Komma stelle beim Taschenrechner Java Basics - Anfänger-Themen 5
sserio Prüfen, ob eine Zahl eine periodische Zahl ist Java Basics - Anfänger-Themen 20
I Auf vollen Monat prüfen? Java Basics - Anfänger-Themen 22
A Dateiname auf Vorkommen prüfen Java Basics - Anfänger-Themen 29
I Prüfen, ob Anzahl an Monate ein Jahr ergeben Java Basics - Anfänger-Themen 4
K Warum gibt mir z. B. 40^128 eine Zahl? Ich dachte mit xor kann man nur booleanwerte erhalten, also prüfen ob etwas whar oder falsch ist? Java Basics - Anfänger-Themen 1
W Klasse existiert prüfen Java Basics - Anfänger-Themen 5
Q Prüfen ob Zahl als Summe von Potenzen dargestellt werden kann. Java Basics - Anfänger-Themen 20
U Kann man bei Java gleich mehrere Bedingungen prüfen in der If, aber in einem "Satz"? Java Basics - Anfänger-Themen 1
O Ich ahbe einen char und diesen soll ich bei .matches prüfen, also ob der char in meiner Zeichenkette vorhanden ist, wie mache ich das? Java Basics - Anfänger-Themen 9
B Array nach Wert prüfen rekursiv Java Basics - Anfänger-Themen 5
G Strings auf Gleichheit prüfen - Aufgabe vom Prof. Java Basics - Anfänger-Themen 5
M Array auf Primzahlen prüfen Java Basics - Anfänger-Themen 7
K Wie String prüfen ob drei mal das gleiche Zeichen vorkommt? Java Basics - Anfänger-Themen 7
J ArrayList auf bereits vorhanden eintrag prüfen Java Basics - Anfänger-Themen 5
X Zwei Dimensionales Array prüfen Java Basics - Anfänger-Themen 1
B Prüfen, ob Zeit Überschreitung Java Basics - Anfänger-Themen 2
M Prüfen auf null ohne NPE Java Basics - Anfänger-Themen 1
X Array auf Leerstellen prüfen Java Basics - Anfänger-Themen 1
FelixN Prüfen, ob ein 2D-Array rechteckig ist Java Basics - Anfänger-Themen 42
C Erste Schritte JComboBox Einträge auf Duplikat prüfen Java Basics - Anfänger-Themen 4
M prüfen ob alle array werte gleich sind Java Basics - Anfänger-Themen 27
C Array auf Null-Inhalte prüfen Java Basics - Anfänger-Themen 9
B Prüfen, ob Country Code in Europa ist? Java Basics - Anfänger-Themen 24
L Prüfen ob Fax (Tif-Datei) vollständig angekommen ist Java Basics - Anfänger-Themen 15
O Datenstruktur auf SET prüfen in O(n) Java Basics - Anfänger-Themen 32
O Einzelne Bits umwandeln und prüfen Java Basics - Anfänger-Themen 23
U Mehrfacheingabe auf bestimmte Parameter prüfen Java Basics - Anfänger-Themen 8
B Prüfen, ob Datum2 der gleiche Tag ist wie Datum1 Java Basics - Anfänger-Themen 10
Dimax Erste Schritte String Eingabe Prüfen Java Basics - Anfänger-Themen 11
S char auf buchstabe/zeichen prüfen Java Basics - Anfänger-Themen 1
S Array doppelter Wert prüfen Java Basics - Anfänger-Themen 7
B Prüfen, ob es schon einen Termin gibt in einem Zeitraum Java Basics - Anfänger-Themen 5
K Linux Speicherplatz mit Java prüfen Java Basics - Anfänger-Themen 4
O Array nach gleichen Zahlen prüfen und ausgeben Java Basics - Anfänger-Themen 6
G Compiler-Fehler Auf Anagramm prüfen Java Basics - Anfänger-Themen 1
B Excel File einlesen und Überschrift prüfen Java Basics - Anfänger-Themen 8
DaCrazyJavaExpert Input/Output Prüfen wie oft etwas eingegeben wurde Java Basics - Anfänger-Themen 2
K Operatoren 2D Int Array auf Null-Referenzen prüfen Java Basics - Anfänger-Themen 18
S Prüfen ob Zelle in Excel leer ist funktioniert nicht (Apache POI) Java Basics - Anfänger-Themen 18
C Klassen Reguläre Ausdrücke auf Gleichheit prüfen Java Basics - Anfänger-Themen 5
M Erste Schritte Java prüfen ob eine der Möglichkeiten erfüllt ist Java Basics - Anfänger-Themen 2
R Auf Nachkommastellen prüfen. Java Basics - Anfänger-Themen 2
P Argumente auf plausibilität prüfen... Java Basics - Anfänger-Themen 8
F LimitedQueue auf Datum prüfen Java Basics - Anfänger-Themen 6
B Passwort prüfen bis eindeutig - while Schleife? Java Basics - Anfänger-Themen 11
Tommy Nightmare Variable auf mehrere Ungleichheiten prüfen Java Basics - Anfänger-Themen 18
B String mit Emailadresse prüfen Java Basics - Anfänger-Themen 11
E 2D Arrays auf Ungleichheit prüfen! Java Basics - Anfänger-Themen 5
MrSnake Prüfen ob TitledPane schon besteht Java Basics - Anfänger-Themen 2
B Serial Key prüfen -> String mit privatem Key und dann abgleichen; Summe = 0 Java Basics - Anfänger-Themen 8
N Compiler-Fehler Iban prüfen Java Basics - Anfänger-Themen 7
J Prüfen ob Arrays nur mit einem Wert belegt sind Java Basics - Anfänger-Themen 3
M String prüfen Java Basics - Anfänger-Themen 7
E Prüfen ob Sammlung gesetzt wurde - Lebensmittelsammlung Java Basics - Anfänger-Themen 8
H Zufällig generierte Zahlen auf Eingabe prüfen Java Basics - Anfänger-Themen 5
S Prüfen ob bestimmter Ordner geöffnet ist (Windows XP) Java Basics - Anfänger-Themen 5
Ruvok Prüfen ob bestimmtest Element existiert im Array Java Basics - Anfänger-Themen 11
DeVolt Java8 Paket Time: Datum prüfen / try-catch Java Basics - Anfänger-Themen 1
W char-Array auf bestimmte Zeichen prüfen Java Basics - Anfänger-Themen 10
S String auf Pallindromeigenschaft prüfen Java Basics - Anfänger-Themen 15
AssELAss Datums-Objekt prüfen ob im gleichen Monat? Java Basics - Anfänger-Themen 5
Screen Input/Output Wie prüfen ob Stream1 in Stream2 enthalten ist (on-the-fly) ? Java Basics - Anfänger-Themen 5
P Seite auf Inhalt prüfen Java Basics - Anfänger-Themen 2
I Prüfen ob Webseite existiert Java Basics - Anfänger-Themen 3
Z Inputs prüfen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben