AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Sudoku Lösen und Code Verständnisproblem
Thema durchsuchen
Ansicht
Themen-Optionen

Sudoku Lösen und Code Verständnisproblem

Ein Thema von MaToBe · begonnen am 18. Mai 2010 · letzter Beitrag vom 19. Mai 2010
 
MaToBe

Registriert seit: 2. Aug 2008
162 Beiträge
 
#4

Re: Sudoku Lösen und Code Verständnisproblem

  Alt 18. Mai 2010, 23:33
Zitat von omata:
Vielleicht hilft dir das hier weiter.
Besitzt dein Programm solch eine Funktion? Ich habe dein Projekt bereits aufm PC aber ich kann es nicht compilieren... "QuickRpt, QRCtrls können nicht aufgelöst werden".


Zitat von Tryer:
Sudoku := TSudoku.Create; Ansonsten dürfte die Fehlerbeschreibung etwas genauer sein
okay das war wirklich ein blöde Fehler... naja is schon spät

jetzt scheint es zu funktionieren, auch wenn ich natürlich keine visuelle Bestätigung habe.

Delphi-Quellcode:
...
type
  use= set of 1..81;
  TSudoku=Class(TObject)
  private
    sudoku: Array of Array[1..81] of Integer;
    impossible:Array of Array[1..9,1..9,1..9] of Boolean;
    owner: Array of Array[1..9,1..9,1..9] of Integer;
    quadrant: Array of Array[1..3,1..3,1..9] of Boolean;
    count,num:integer;
    fehler:boolean;
    ErrVal,ErrNum:integer;
    inuse: set of 1..81;
...
procedure TSudoku.SetPos(num,index:integer); //Möglichkeiten setzen
var
x,y,c1,c2,Val,LineX,LineY,QuadX,QuadY:integer;
begin
  LineX:=GetLineX(index);
  LineY:=GetLineY(index);
  QuadX:=GetQuadX(index);
  QuadY:=GetQuadY(index);
  Val:=Sudoku[num,index];
  //Zeilen Möglichkeiten setzen;
  for c1:=1 to 9 do begin
    if owner[num,LineX,c1,val]=0 then owner[num,LineX,c1,val]:=index;
    impossible[num,LineX,c1,val]:=true;
    if owner[num,c1,LineY,val]=0 then owner[num,c1,LineY,val]:=index;
    impossible[num,c1,LineY,val]:=true;
    if owner[num,Linex,Liney,c1]=0 then begin
      owner[num,Linex,Liney,c1]:=index;
      impossible[num,Linex,Liney,c1]:=true;
    end;
  end;
  for c1:= 1 to 3 do begin
    x:=(Quadx-1)*3+c1;
    for c2:=1 to 3 do begin
      y:=(Quady-1)*3+c2;
      if owner[num,x,y,val]=0 then owner[num,x,y,val]:=index;
      impossible[num,x,y,val]:=true;
    end;
  end;
  Quadrant[num,QuadX,QuadY,val]:=true;
end;
Mit diesem Code werden fü jedes Feld, so wie ich das Verstanden habe, die möglichen Zahlen gesetzt. Allerdings werde ich daraus nicht ganz schlau. Vielleicht kann mir das einer grob erklären... Ansatz usw.
  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 10:14 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