AGB  ·  Datenschutz  ·  Impressum  







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

Sudoku Kandidaten löschen

Ein Thema von Marcel2906 · begonnen am 10. Nov 2011 · letzter Beitrag vom 10. Nov 2011
 
Marcel2906

Registriert seit: 17. Aug 2011
Ort: Warendorf
112 Beiträge
 
Delphi 2010 Professional
 
#1

Sudoku Kandidaten löschen

  Alt 10. Nov 2011, 10:00
Delphi-Version: 2010
Hey,

glaube ich hab eine sehr schwierige Frage.
An sich ist das bestimmt nicht so kompliziert, aber ich hab mir mal wieder was komisches ausgedacht
Nun, erstmal beschreibe ich mein Programm:

Insgesamt soll ist ein Sudoku Solver werden. Das Sudoku wird in ein Array 0..8 of Array (integer) 0..8 eingetragen. Alle leeren Felder werden dann mit einer 0 gefüllt. Dann werden alle leeren Felder (Felder mit 0) mit Kandidaten gefüllt, sprich bekommen den Wert 123456789. So weit so gut.
Dann werden aus den Kandidaten alle festen Werte gelöscht. Dies gelingt mir auch mit den Werten einer Spalte und einer Reihe, jedoch nicht mit denen in einem Feld. Leider ist der Code für die Spalte und Reihe schon sehr kompliziert. Dann habe ich mich an den Code für die Felder herangewagt, aber scheite immer wieder, mein letzter Versuch sieht folgendermaßen aus:

Es muss ein Denkfehler von mir sein...

Delphi-Quellcode:
Procedure TForm2.BtKndDeleteClick(Sender: TObject);
Var
   x, y, a, b, m, n, xx, yy: integer;
   s, ss: String;
Begin
   m := 0;
   n := 0;
   a := 0;
   b := 0;
   // Feld mit mehrern Kandidaten suchen
   Repeat
      Repeat
         If aSudoku[m, n] > 9 Then Begin
            a := m;
            b := n;
            x := m;
            // Zeile nach Werten durchsuchen und aus Kandidatenliste löschen
            For y := 0 To 8 Do
               If aSudoku[x, y] < 10 Then Begin
                  s := IntToStr(aSudoku[a, b]);
                  ss := IntToStr(aSudoku[x, y]);
                  s := Stringreplace(s, ss, '', [rfReplaceAll]);
                  aSudoku[a, b] := StrToInt(s);
               End;
            y := n;
            // Spalte nach Werten durchsuchen und aus Kandidatenliste löschen
            For x := 0 To 8 Do
               If aSudoku[x, y] < 10 Then Begin
                  s := IntToStr(aSudoku[a, b]);
                  ss := IntToStr(aSudoku[x, y]);
                  s := Stringreplace(s, ss, '', [rfReplaceAll]);
                  aSudoku[a, b] := StrToInt(s);
               End;

            //Feld nach Werten durchsuchen und aus Kandidatenliste löschen
            For xx := 0 To 2 Do
               For yy := 0 To 2 Do Begin
                  For x := xx * 3 To xx * 3 + 2 Do
                     For y := yy * 3 To yy * 3 + 2 Do
                        If aSudoku[x, y] < 10 Then Begin
                           s := IntToStr(aSudoku[a, b]);
                           ss := IntToStr(aSudoku[x, y]);
                           s := Stringreplace(s, ss, '', [rfReplaceAll]);
                           aSudoku[a, b] := StrToInt(s);
                        End;
               End;
         End;
         n := n + 1;
      Until n > 8;
      n := 0;
      m := m + 1;
   Until m > 8;
End;
Angehängte Dateien
Dateityp: zip Sudoku Solver.zip (481,1 KB, 4x aufgerufen)

Geändert von Marcel2906 (10. Nov 2011 um 13:01 Uhr)
  Mit Zitat antworten Zitat
 


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 04:50 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