AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Sudoku...

Ein Thema von logo123 · begonnen am 22. Mär 2007 · letzter Beitrag vom 25. Mär 2007
Antwort Antwort
Seite 1 von 3  1 23      
logo123

Registriert seit: 9. Okt 2006
42 Beiträge
 
Delphi 2005 Personal
 
#1

Sudoku...

  Alt 22. Mär 2007, 20:28
Hi, ich versuche gerade ein Sudoku Lösungsgenarator zu programmieren. Ich weiss nicht wie ich dei einzelnen Zellen miteinander vergleichen kann. Kann mir jemand helfen. Ich habe die daten angehängt.
Angehängte Dateien
Dateityp: zip projekt_sudoku_601.zip (7,4 KB, 19x aufgerufen)
  Mit Zitat antworten Zitat
logo123

Registriert seit: 9. Okt 2006
42 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Sudoku...

  Alt 23. Mär 2007, 22:42
Hat denn niemand eine Ahnung davon?
Es ist ein Projekt für die Schule und ich möchte nur wissen wie ich das machen soll (Kein Quellcode).Vieleicht ein Struktogramm oder so
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Sudoku...

  Alt 23. Mär 2007, 22:51
Ahnung davon haben hier sicherlich etliche

Strategien zum Lösen eines Sudokus gibt es viele. Für ein Computerprogramm empfiehlt es sich auf jeden Fall, Kandidatenlisten zu führen. D.h. Du hast ja eine Matrix (in den meisten Fällen 9x9 Felder) und an jedem Platz können die Zahlen 1-9 stehen. Im ersten Schritt werden jetzt die Zahlen die im Lösungsfeld schon vorgegeben sind in diese Matrix eingetragen und damit alle anderen Kandidaten für das jeweils betreffende Feld eliminiert.

Danach wendest Du die üblichen Regeln an:

- In jedem 3x3-Block darf 1-9 nur einmal vorkommen, d.h. aus den Kandidatenlisten für diese Felder kannst Du die gerade eingetragene Zahl entfernen.

- In jeder Zeile darf 1-9 nur einmal vorkommen, d.h. aus den Kandidatenlisten in dieser Zeile auch wieder die entsprechenden Ziffern entfernen.

- In jeder Spalte darf 1-9 nur einmal vorkommen, d.h. aus den Kandidatenlisten in dieser Spalte auch wieder die entsprechenden Ziffern entfernen.

Jedes Mal wenn Du irgendwo Kandidaten eliminiert hast, musst Du dann durch das Feld laufen und schauen ob Du irgendwo schon alle Kandidaten bis auf einen eliminiert hast. Den kannst Du dann auch wieder als Lösung eintragen und die entsprechenden Kandidaten (siehe oben) entfernen.

Aus den Kandidatenlisten ergibt sich dann auch noch:

- Wenn ein Kandidat nur in einem Feld einer Zeile vorhanden ist, dann gehört der dort als Lösung hin, also eintragen und weiter wie oben

- Wenn ein Kandidat nur in einem Feld einer Spalte vorhanden ist, dann gehört der dort als Lösung hin, und weiter wie oben.

- Wenn ein Kandidat in einem 3x3-Block.... usw.

Wie Du das jetzt in ein Programm überführst, darfst Du Dir aber erstmal selber überlegen. Nur mit viel Übung wird man Meister
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#4

Re: Sudoku...

  Alt 24. Mär 2007, 00:10
Richtig freakig wäre ein Lösungsansatz über "genetische Algorithmen".

Kurzeinführung: http://techni.tachemie.uni-leipzig.de/jsga/gakurz.html
Crash-Kurs: http://www.ai-junkie.com/ga/intro/de-gat1.html (hier gibts auf Seite 3 zwei Delphi-Beispiele)
  Mit Zitat antworten Zitat
logo123

Registriert seit: 9. Okt 2006
42 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Sudoku...

  Alt 24. Mär 2007, 16:31
Das Programm guckt jetzt vertikal horizontal und im 3*3 Kasten ob eine Zahl vorhanden ist oder nicht. Was soll ich jetzt machen?
Angehängte Dateien
Dateityp: zip projekt_sudoku_177.zip (14,0 KB, 11x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Sudoku...

  Alt 24. Mär 2007, 16:44
Mein Posting nochmal lesen, die erledigten Sachen abhaken und den Rest noch einbauen?
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Kinimod8

Registriert seit: 9. Jan 2004
Ort: Barsbüttel
317 Beiträge
 
Delphi 6 Personal
 
#7

Re: Sudoku...

  Alt 24. Mär 2007, 17:40
Zum Lösen von Sudokus kannst du mal die DP durchsuchen, den Wikipedia-Eintrag zum Sudoku lesen oder dich direkt über Backtracking informierren (siehe auch Tutorial auf dsdt.info).
Dominik Peters
  Mit Zitat antworten Zitat
dino

Registriert seit: 15. Jul 2006
Ort: Bad Münstereifel
627 Beiträge
 
Delphi 5 Professional
 
#8

Re: Sudoku...

  Alt 24. Mär 2007, 17:43
Zitat von Nuclear-Ping:
Richtig freakig wäre ein Lösungsansatz über "genetische Algorithmen".

Kurzeinführung: http://techni.tachemie.uni-leipzig.de/jsga/gakurz.html
Crash-Kurs: http://www.ai-junkie.com/ga/intro/de-gat1.html (hier gibts auf Seite 3 zwei Delphi-Beispiele)
hab mir alles angeguckt und finds sehr interessant

doch glaube nciht, dass es so einfach ist alein eine geeignete codierung für eine Lösung zu finden geschweige denn den fitnesswert zu berechnen

dazu bezweifle ich, dass das verfahren besser ist als das, was hier vorgeschlagen wurde, doch darüber lässt sich durchaus streiten
  Mit Zitat antworten Zitat
Kinimod8

Registriert seit: 9. Jan 2004
Ort: Barsbüttel
317 Beiträge
 
Delphi 6 Personal
 
#9

Re: Sudoku...

  Alt 24. Mär 2007, 17:50
Zitat von dino:
dazu bezweifle ich, dass das verfahren besser ist als das, was hier vorgeschlagen wurde, doch darüber lässt sich durchaus streiten
Das von OldGrumpy vorgeschlagene Verfahren, das auf einer sehr einfachen Logik basiert, kann aber nur einen minimalen Bruchteil aller Sudoku-Rätsel lösen. Neben dem oben angesprochenen Verfahren des Backtrackings (Try+Error), das für jedes Rätsel eine Lösung findet, gibt es noch eine Vielzahl an Logikverfahren neben den Singles (OldGrumpy). Siehe dazu bspw. auch hier.
Dominik Peters
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Sudoku...

  Alt 24. Mär 2007, 17:53
Ein gutes Sudoku sollte sich allein mit Logik und nicht mit stumpfem Ausprobieren lösen lassen. Leider wird das oft ignoriert...
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:17 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