1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Wie würdet ihr ein Sudoku schreiben/lösen?

    • Frage
  • EzechielP
  • 13. Januar 2006 um 16:24
  • Unerledigt
  • Aurelius84
    1
    Aurelius84
    Mitglied
    Punkte
    10
    Beiträge
    2
    • 7. Februar 2006 um 00:38
    • #21

    hallo habe versucht einen sudoku generator zu schrieben aber die sind meist nicht lösbar. kann mal bitte einer schaun was ich vergessen hab. bin nen java noob und mach es erst seit 4 monaten also sry wenn was nich ganz korrekt is

    Zitat

    package Sudoku;

    import java.util.*;

    class Generate {
    static int board[][] = { { 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 } };

    public static void printBoard(int[][] board) {
    for (int i = 0; i < 9; i++) {
    for (int j = 0; j < 9; j++)
    if (board[i][j] != 0)
    System.out.print(board[i][j] + " ");
    else
    System.out.print(". ");
    System.out.println();
    }
    System.out.println();
    }
    public static void generateBoard(int[][] board) {
    for (int index = 0; index <= 32; index++) {
    Random zeile = new Random();
    Random spalte = new Random();
    Random r = new Random();
    int i = Math.abs(zeile.nextInt()) % 9;
    int j = Math.abs(spalte.nextInt()) % 9;
    int zzahl = 1+ Math.abs(r.nextInt()) % 9; // Zufallszahl die
    // hinzugefügt werden soll

    // (blockTest(board, i, j, zzahl) == true) &&
    if (board[i][j] == 0) {
    if ((blockTest(board, i, j, zzahl) == true) &&(zeilenTest(board, i, zzahl) == true)
    && (spaltenTest(board, j, zzahl) == true))
    board[i][j] = zzahl;
    } else
    index = index - 1;

    }

    }

    /**
    *
    * @param zeile
    * ist der Zeilenindex vom Feld [zeile][spalte]
    * @param zahl
    * ist die zahl die dem Feld hinzugefügt werden soll
    *
    */
    public static boolean zeilenTest(int[][] board, int zeile, int zahl) {

    for (int i = 0; i < 9; i++) {
    if (board[zeile][i] == zahl) {
    return false;
    }
    }
    return true;

    }

    /**
    *
    * @param spalte
    * ist der Spaltenindex vom Feld [zeile][spalte]
    * @param zahl
    * ist die zahl die dem Feld hinzugefügt werden soll
    *
    */
    public static boolean spaltenTest(int[][] board, int spalte, int zahl) {
    for (int i = 0; i < 9; i++) {
    if (board[i][spalte] == zahl) {
    return false;
    }
    }
    return true;

    }
    /**
    *
    * @param x ist der Zeilen index vom Feld [zindex][sindex]
    * @param y ist der Zeilen index vom Feld [zindex][sindex]
    * @param zahl ist die zahl die dem Feld hinzugefügt werden soll
    *
    */
    public static boolean blockTest(int[][] board, int x,int y,int zahl){
    int tmpx = x - (x%3);
    int tmpy = y - (y%3);

    for(int i = tmpx ; i < tmpx+3 ; i++){
    for(int j = tmpy ; j < tmpy+3 ; j++){
    if(board[i][j] == zahl)

    return false;
    }
    }
    return true;
    }


    /**
    * @param args
    */
    public static void main(String args[]) {
    generateBoard(board);
    printBoard(board);
    }
    }

    Alles anzeigen
  • Aurelius84
    1
    Aurelius84
    Mitglied
    Punkte
    10
    Beiträge
    2
    • 7. Februar 2006 um 03:26
    • #22

    ich glaub ich hab das problem gefunden. ich hab bei wiki was gesehn und das passt gar nich zu dem was ich mach. ich hab zwar in jeder zeile und jeder spalte immer nur eine zahl von 1 bis 9 und das mit den blocks passt auch aber naja is kein lösbares sudoku. dumme sache.

  • CornedBee
    2
    CornedBee
    Mitglied
    Punkte
    30
    Beiträge
    6
    • 6. März 2006 um 11:49
    • #23

    Um noch eine weitere Programmiersprache in den Mix zu werfen, hier ist eine Haskell-Implementation. Zugegeben: sie ist unelegant und langsam, aber sie funktioniert.

    All the buzzt
    CornedBee :face_with_rolling_eyes:

  • MagicT
    1
    MagicT
    Mitglied
    Punkte
    5
    Beiträge
    1
    • 8. März 2006 um 15:11
    • #24

    Hi!

    Also ich habe auch ein Java-Applet geschrieben, das Sudokus generiert und löst. Das Ergebnis ist ganz nett geworden, aber den Quellcode will ich euch nicht zumuten (1000+ Zeilen ohne Kommentar :winking_face:

    Sudoku online spielen

    Viele Grüße!

  • Adok
    20
    Adok
    Mitglied
    Reaktionen
    49
    Punkte
    4.199
    Beiträge
    714
    • 6. April 2006 um 00:18
    • #25

    Ich habe den Thread erst jetzt zufällig entdeckt. Ich habe schon im August 2005 ein Programm veröffentlicht, das Sudokus lösen kann - C++-Source inklusive. Gibt's auf meiner Homepage.

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung