1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • 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
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • Aurelius84
    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
    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
    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.

  • MagicT
    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 ;)

    Sudoku online spielen

    Viele Grüße!

  • Adok
    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.

  1. Datenschutzerklärung
  2. Impressum