Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Sudoku Programm !? (https://www.delphipraxis.net/65961-sudoku-programm.html)

Christian H. 23. Mär 2006 13:19

Re: Sudoku Programm !?
 
ah ok *gg* hättest du den vlt eine andere Idee wie man da ran gehen könnte ??

mfg

Grishnak 23. Mär 2006 13:22

Re: Sudoku Programm !?
 
Zitat:

Zitat von Christian H.
ah ok *gg* hättest du den vlt eine andere Idee wie man da ran gehen könnte ??

Wenn es ums Prinzip geht, dann lies nochmal mein erstes Posting in diesem Thread durch.

Christian H. 23. Mär 2006 13:31

Re: Sudoku Programm !?
 
Zitat:

Zitat von Grishnak
Wenn das Programm merkt, dass für ein bestimmtes Feld keine Zahl von 1 bis 9 mehr passt, dann muss es "einen Schritt" zurück gehen, im vorletzten Feld eine andere Zahl einsetzen und dann weitermachen.

Sry hatte den post überlesen ! Ah verstehe also muss ich eine weitere Kontrollsturktur einbinden , die den Absturz verhindert ?? Also müsste ich das bisherige Programm solange ausführen lassen bis dieser Fehler kommt oder ?? Aber komme bis jetzt noch nicht drauf wie ich das Programm gestopt bekomme wenn dieser Fehler kommt ! Und sobald ich das programm gestopt habe , muss ich einen Schritt zurück gehen und nochmal eine Random Zahl konfigurieren ?

mfg

Corpsman 23. Mär 2006 16:09

Re: Sudoku Programm !?
 
Hallo Ich wurde gebeten auch was zu sagen.

Als Erstes : wenn ihr das wirklich so macht wie ich hier die Kilometerlangen Code's sehe. dann gute Nacht.

Ich Empfehle euch unbedingt ein Array der Art.

Delphi-Quellcode:
Type
     TPencil = array [0..8] of Boolean;

     TSubfield = record
       Data = Byte;
       Pencils = Tpencil;
     end;

     TField = Array[0..8,0..8] of TSubfield;
euer Argument mit dem Speicherverbrauch ist da total fehl am Platz , da das so gerade mal 9 Bit + 81 Byte gleich ungefähr << 100 Byte sind. Und das ist angesichts eines Normalerweise HAuptspeicherns von 512 MB ein Witz.

Eure Label Variante finde ich nur dann Akzeptabel wenn ihr euch wirklich überhaupt keinen Stress beim Proggen macht.

Doch dann sprecht die Labels doch bitte nicht so kompliziert an.

Etwa in der Art
Delphi-Quellcode:
var x,y:Integer;
    f:Tfield;
begin
  for x:= 0 to 8 do
    for y:= 0 to 8 do
      If F[x,y].data <> 0 then begin
        TLabel(Findcomponent('Label'+intostr((x+1)*9+(y+1))).caption:=inttostr(f[x,y].data);
        // Mir ist klar das ihr die Labels dann anders Platzieren müst. Aber man kann die Formel
        // (x+1)*9+(y+1) natürlich auch noch beliebig kompliziert machen ;)
      end;
end;

Wäre viel eleganter, ihr braucht halt 81 Labels.

Da wäre ich aber schon viel zu faul dazu mit.

Delphi-Quellcode:
var x,y:Integer;
    f:Tfield;
begin
  for x:= 0 to 8 do
    for y:= 0 to 8 do
      If F[x,y].data <> 0 then begin
        form1.canvas.textout((x+1)*10,(y+1)*10,inttostr(f[x,y].data));
      end;
end;
geht es mindestens genau so gut.

Noch kurz zum TPencil.

Die braucht ihr damit ihr elegant die Noch freien Zahlenmöglichkeiten berechnen könnt.

Wer ansehen will wie das Fertig aussehen köntne der sehe sich die Projekte Nsudoku und / oder Sudoku auf www.Corpsman.de.vu an.

Ich hoffe ich konnte eure Mühen noch ein wenig in die Richtige Bahn lenken.

Corpsman

Christian H. 23. Mär 2006 17:34

Re: Sudoku Programm !?
 
War auf jedenfall schonmal ein Denkansatz ! Vielen Dank erstmal ! Aber noch ne Frage was genau ist TPencil ?? Hab beim Googeln nichts gefunden !

mfg

Corpsman 23. Mär 2006 17:44

Re: Sudoku Programm !?
 
Lol

Du solltest die Post aufmerksammer lesen

Zitat:

was genau ist TPencil ??
Das steht wenige Zeilen über der Deklaration von Tfield.

Du brauchst die um dir zu merken welche Zahlen du in die Jeweiligen Felder noch schreiben darfst oder net.

Wenn du dir die Mathe Theorie zu Sudoku reinziehst dann wirst du feststellen das es ohne die Pencils nicht geht.

Wenn du immer noch nicht weist was gemeint ist schau dir die Option show pencil numbers in Kombination mit auto Pencil in meinem Sudoku an.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:21 Uhr.
Seite 2 von 2     12   

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