Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Java + Sudoku Algorithmus (https://www.delphipraxis.net/125856-java-sudoku-algorithmus.html)

Christian18 13. Dez 2008 09:45


Java + Sudoku Algorithmus
 
Hallo,

da ich kein aktives Forum für Java kenne, wollte ich es mal hier probieren. Ich denke das mein Problem auch nichts mit Java direkt zu tun hat. Mein Problem ist mehr der Algorithmus. Ich will einen Algorithmus schreiben, womit ich eine Sudoku Matrix in meinem zweidimensionalen Array erzeugen kann. Dazu möchte ich eine Klasse schreiben.

Es gibt drei Methode die ich unbedingt verwenden muss:

1. public boolean checkRows(int[][] pSudokuMatrix) // Prüft, ob die Reihen den Spielregeln entsprechen
2. public boolean checkColumns(int[][] pSudokuMatrix) // Prüft, ob die Spalten den Spielregeln entsprechen
3. public boolean checkBlocks(int[][] pSudokuMatrix) // Prüft, ob die Blöcke den Spielregeln entsprechen

Nun zum Algorithmus, den ich verwenden soll!

Beginnend in der ersten Zeile, soll eine Zufallszahl erzeugt werden. Wenn die erzeugt Zufallszahl zwischen 1 und 9 den Regln entspricht, dann kann die erste Zahl eingetragen werden. Dann geht es mit der zweiten Zahl der ersten Reihe weiter. Das wird solange gemacht, bis die erste Reihe voll ist. Dann geht es zur zweiten Reihe. Das wird wieder solange bemacht, bis alle Reihen voll sind.

Ich glaube, dass ich den Algorithmus ganz gut imlementiert habe. Jedoch funktioniert er mal und mal nicht.

Hier mein Code:

Code:
    public void generateSudokuMatrix() {
        Random random = new Random();// Erzeugt ein Objekt der Klasse Random
        int[][] temp = new int[size * size][size * size];// size hat den Wert 3 und temp ist ein zweidimensionales Array
        int x;// Schleifenvariable
        int y;// Schleifenvariable
       
        y = 0;
        do {
            x = 0;
            do {
                temp[x][y] = random.nextInt(size * size) + 1;// Zufallszahl von 1 - 9 erzeugen
                if(checkRows(temp) && checkColumns(temp) && checkBlocks(temp)) {
                    sudoku = temp; // Sudoku ist auch ein zweidimensionales Array
                    x++;
                }
                else {
                    temp[x][y] = 0;
                }
            }while(x != size * size);
            y++;
        }while(y != size * size);
    }
Vieleicht könnt ihr mir helfen.

LG Christian

Christian18 13. Dez 2008 13:03

Re: Java + Sudoku Algorithmus
 
Hallo,

ich bin nochmal. Ich glaube es liegt an der Zufallszahl. Kann ja sein, dass die zufallszahl nie die wird, die er braucht oder?

Obwohl, wie ich ist die Wahrscheinlichkeit, dass die zufallszahl nicht kommt. Spätestens bei 100 durchläufen müsste ja von 1-9 jede min. einmal gefallen sein. Mhhh... Der Algo ist vieleicht nicht der schnellste, sollte doch aber funktionieren oder?

LG Chris

Christian18 14. Dez 2008 16:49

Re: Java + Sudoku Algorithmus
 
Hallo,

ist evtl. doch das falsche Forum oder? Kennt jemand denn ein aktives Java Forum?

LG Christian


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz