ubuntuusers.de

Sudoku Solver

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

pixeltec

Anmeldungsdatum:
23. September 2008

Beiträge: Zähle...

Hallo zusammen, ich will euch mein Projekt "Sudoku Solver" vorstelle. Das Programm wurde mit Java (Netbeans 6.5 Beta) programmiere. Es kann Sudokus Schritt für Schritt lösen. Auch nicht eindeutige Sudokus(mit mehr als einer Lösung) lösen.

Meine frage was könnte verbessert werden?

Ungültiges Makro

Dieses Makro ist nicht verfügbar

sudoku.zip (171.0 KiB)
Download sudoku.zip
Bilder

dauerbaustelle

Avatar von dauerbaustelle

Anmeldungsdatum:
2. Juli 2007

Beiträge: 1936

Steckt da Logik oder Bruteforce dahinter? 😀

stfischr Team-Icon

Avatar von stfischr

Anmeldungsdatum:
1. März 2007

Beiträge: 19197

Hm ich kann den Quellcode nicht anschauen, muss man so ne .jar mit was speziellem entpacken? Oder ist das der fertige bytecode? Hab noch nie viel mit java gemacht, außer mal nen Mail-client in der Info-Übung und der is nie außerhalb von Eclipse gelaufen 😀

Das Interface is schonma ganz nett, da währe mein Tipp - ins Deutsche übersetzen. 😉

Edit: max steps verhält sich bei mir eigenartig, was genau soll das machen?

pixeltec

(Themenstarter)

Anmeldungsdatum:
23. September 2008

Beiträge: 4

stfischr schrieb:

Hm ich kann den Quellcode nicht anschauen, muss man so ne .jar mit was speziellem entpacken? Oder ist das der fertige bytecode? Hab noch nie viel mit java gemacht, außer mal nen Mail-client in der Info-Übung und der is nie außerhalb von Eclipse gelaufen 😀

Das Interface is schonma ganz nett, da währe mein Tipp - ins Deutsche übersetzen. 😉

Edit: max steps verhält sich bei mir eigenartig, was genau soll das machen?

Die JAR enthält nur den Compilierten Code und wird ähndlich wie eine EXE durch einen Doppelklick ausgeführt. Mit dem Max kann man das Maximum an Lösungen bestimmen.

Dauerbaustelle schrieb:

Steckt da Logik oder Bruteforce dahinter? 😀

Zuerst werden für jedes Feld die Zahlen die infrage kommen generiert. Bei den Feldern bei denen nur eine Zahl infrage kommt wird diese eingesetzt und der Vorgang wird wiederholt. Wenn keinem Feld nur eine Zahl infrage kommt(kommt nur bei Sudokus mit mehreren Lösungen vor), wird bei dem Feld mit den wenigsten Möglichkeiten jede Möglichkeit aus probiert.

Ich werde den Quellencode uploaden, muss ihn nur noch aufräumen und kommentieren 😊 .

stfischr Team-Icon

Avatar von stfischr

Anmeldungsdatum:
1. März 2007

Beiträge: 19197

pixeltec schrieb:

Mit dem Max kann man das Maximum an Lösungen bestimmen.

Ah in kombination mit show steps war das natürlich etwas verwirrend, da er mehr als in max steht anzeigt, vieleicht währe eine Umrahmung der Endergebnisse möglich? Edit: nö die sind ja schon Umrahmt ☺ habs auf meinem bildschirm nicht gesehen, vieleicht mit ner dunkleren farbe?

Ich werde den Quellencode uploaden, muss ihn nur noch aufräumen und kommentieren 😊 .

Fein werd auf jeden Fall mal rein schauen, hab mal in C nen reinen Brutforce geschrieben und bin doch sehr an ner eleganteren Lösung interessiert. Btw. war der Brutforce recht schnell, lief im Millisekundenbereich.

pixeltec

(Themenstarter)

Anmeldungsdatum:
23. September 2008

Beiträge: 4

So jetzt habe ich den Code fertig.

Um den Code(Sudoku_projekt.zip) zu öffnen bracht man Netbeans 6.5Beta http://download.netbeans.org/netbeans/6.5/beta/

Kleine erklärug zum Package:

+
|
|-Sudoku
| |-Bundle.properties (Sprach File enthält die Übersetztung
| |-LogArrow.java (JavaBean für den Pfeil)
| |-SudokuAboutBox.java (zurzeit nicht verwendet)
| |-SudokuApp.java (Main Class)
| |-SudokuBox.java (JavaBean für die kleinen Sudoku kästchen)
| |-SudokuBoxBig.java (JavaBean für das Sudoku Eingabefeld)
| |-SudokuSolver.java (Java Class die das Sudoku löst)
| |-SudokuView.java (Das GUI)
|
|-Sudoku.resources und sudoku.resources.busyicons
| |-Alle Bilder und Icons

JavaBeans sind komponente die man ins GUI ein fügen kann(Ähnlich wie ein ActivX-Component)

Sudoku_app.zip (231.4 KiB)
Das Programm
Download Sudoku_app.zip
Sudoku_projekt.zip (635.3 KiB)
Der Code
Download Sudoku_projekt.zip

stfischr Team-Icon

Avatar von stfischr

Anmeldungsdatum:
1. März 2007

Beiträge: 19197

Hey sehr übersichtlich Programmiert.

        //Erstellt die Strings fur jede Zeile, Spalte und Box da man Strings einfacher durch suchen kann
        for (int i = 0; i < 9; i++) {
            linesS[i] = makeString(lines[i], "");
            colsS[i] = makeString(cols[i], "");
            boxesS[i] = makeString(boxes[i], "");

Find ich sehr clever und scheint auch Performancemäßig nix zu machen. Bei mir läufts zumindest recht schnell (Pentium M 1.8 GHz).

Ach ja geiles Logo beim Starten.

pixeltec

(Themenstarter)

Anmeldungsdatum:
23. September 2008

Beiträge: 4

stfischr schrieb:

Find ich sehr clever und scheint auch Performancemäßig nix zu machen. Bei mir läufts zumindest recht schnell (Pentium M 1.8 GHz).

Merci für den hinweis.

Ich habe gerade gerade eine bessere Funktion zum vergleichen der Zahlen gefunden. Das Programm wurde um einiges schneller. Beim Test(test.java) der Funktion stellte sich heraus, die neue Funktion ca.2000 mal(8175.75 zu 3.67 ms) schneller ist.

test.java (2.5 KiB)
Download test.java
Sudoku.jar (226.6 KiB)
Download Sudoku.jar

gyger

Anmeldungsdatum:
2. September 2007

Beiträge: 71

Dein letztes Jar hat keine Main Class definiert.

Antworten |