AGB  ·  Datenschutz  ·  Impressum  







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

Sudoku Generator (Anfänge)

Ein Thema von xyss · begonnen am 23. Jan 2013 · letzter Beitrag vom 28. Jan 2013
Antwort Antwort
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#1

AW: Sudoku Generator (Anfänge)

  Alt 24. Jan 2013, 13:30
Hallo,

vielleicht hast Du es ja schon gefunden. Wenn nicht schau Dir mal die procedure TestValues an. Wenn TryNumber erfüllt ist, wie kann dann die entsprechende Zelle leer sein? Demnach ist die Variable Test ab der zweiten Zeile n-te Spalte False und Dein Programm ruf so lange FillUp(SG,Col,Row) bis es scheppert.

Mach mal ein or draus.

Gruß
Volker Zeller
  Mit Zitat antworten Zitat
xyss

Registriert seit: 9. Nov 2012
7 Beiträge
 
#2

AW: Sudoku Generator (Anfänge)

  Alt 24. Jan 2013, 19:17
Die procedure TestValues soll ja an sich nur für eine spezifische Zelle jede Zahl durchprobieren, wenn die random-Zahl nicht reinpasst. Und daher muss die Zelle ja auch leer sein bevor sie eine Zahl einfüllt (dachte ich mir jedenfalls so). Die FillUp procedure wird ja durch die IsFilled procedure wieder aufgerufen (wenn diese False ergibt). Ich habs mal mit der vorgeschlagenen Änderung versucht, aber leider kommt damit ein anderer Fehler auf. Es kommt zwar kein Stackoverflow mehr, aber dafür wird das Resultat falsch (mit einem or füllt er ja dann eine Zahl ein, wenn entweder die Zelle leer ist, oder die Bedingungen erfüllt sind). Aber das mit dem Stack overflow scheint tatsächlich irgendwie daran zu liegen.

Danke schonmal

Geändert von xyss (24. Jan 2013 um 19:19 Uhr)
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#3

AW: Sudoku Generator (Anfänge)

  Alt 24. Jan 2013, 22:13
Hallo,

in Deiner FillUp-Routine füllst Du das Stringgrid von oben nach unten und von links nach rechts. Dabei ermittelst Du zufällige Werte und prüfst, ob das in die Zeile, Spalte bzw. Block passt. Dieses Vorgehen wird wohl nicht zielführend sein. Beispiel:
Code:
1. Reihe: 6 3 2  4 9 5  7 1 8
2. Reihe: 7 4 5  3 6 8  2 9
Da geht jetzt wohl nur noch SG.Cells[8, 1] = 1, aber das fällt bei der Prüfung durch => FillUp ruft sich solange selbst auf bis der Stackoverflow kommt.

Da hilft wohl nur ein anderer Ansatz (das or hilft leider auch nix).

Gruß
Volker Zeller
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#4

AW: Sudoku Generator (Anfänge)

  Alt 24. Jan 2013, 23:09
Da hilft wohl nur ein anderer Ansatz
Komplettes Sudoku Spielfeld mit ALLEN Zahlen füllen und zwar so dass die Sudoku Regeln erfüllt werden.
Danach zufällig einige Ziffern löschen.

Auf diese Weise kann man dem Spieler später auch die Lösung zeigen, falls das Spiel zu schwer sein sollte.
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#5

AW: Sudoku Generator (Anfänge)

  Alt 24. Jan 2013, 23:57
Hallo,

Lesestoff gibt zum Thema Sudokus generieren / lösen es jede Menge (ein kleiner Auszug):

Hier im Forum suchenSudoku
http://www.planet-source-code.com/vb...=1756&lngWId=7
http://www.entwickler-ecke.de/topic_...l_48160,0.html
und natürlich auch bei
http://www.google.de/search?hl=de&so...aeo4GYBw&gbv=2

Gruß
Volker Zeller

Geändert von Volker Z. (25. Jan 2013 um 00:06 Uhr) Grund: Rechtschreibung
  Mit Zitat antworten Zitat
xyss

Registriert seit: 9. Nov 2012
7 Beiträge
 
#6

AW: Sudoku Generator (Anfänge)

  Alt 25. Jan 2013, 05:27
Ich dachte es würde so funktionieren, dass, wenn alle Testwerte "durchfallen", das heißt, wenn das Programm nicht mehr weiterkommt, es um eine Zelle zurückgeht und dort eine neue Ziffer einfügt.

Daher auch dieser Teil hier

Code:
    if not Test then
       Col:=Col-1
da sollte er doch theoretisch wieder eine Zelle zurückgehen, und die von neuem mit einer Zufallszahl füllen, oder nicht?
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#7

AW: Sudoku Generator (Anfänge)

  Alt 25. Jan 2013, 07:50
Hi,

ohne jetzt den Code näher angeschaut zu haben:
Wenn für das vorherige Feld nur eine Wahl möglich war, dann wird er doch wieder gleich wählen und du hast das gleich Problem ein Feld weiter nochmal, oder?


Viele Grüße,
Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz