Einzelnen Beitrag anzeigen

Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#1

Eindeutigkeit eines Sudokus

  Alt 21. Nov 2011, 12:34
Delphi-Quellcode:
function TForm1.TestSudoku: boolean;
var
  N, M, K, I, J, J1, K1: integer;
  T: TPoint;
begin
  // Ausdünnung
  // 1. Doppelte Kandidaten entfernen
  Result:= true;
  for N:= 1 to 9 do // Numbers
    for I:= 0 to 8 do // Boxes
      for J:= 0 to 8 do // Indices
      begin
        T:= BoxToRowCol(I, J);
        K:= RowColToIndex(T.X, T.Y); // Edit
        if FCandidates[K].IndexOf(N) > -1 then
          for J1:= 0 to 8 do // Indices
          begin
            T:= BoxToRowCol(I, J1);
            K1:= RowColToIndex(T.X, T.Y); // Edit
            if K <> K1 then
            begin
              M:= FCandidates[K1].IndexOf(N);
              if M > -1 then FCandidates[K1].Del(M);
            end;
          end;
      end;

   und jetzt ??

   wann false (also nicht eindeutig) ????
Ich gehe so vor, daß für alle nicht gesetzten Felder eine Kandidatenliste erstellt wird und anschließend soll TestSudoku nun feststellen, ob das Sudoku so eindeutig (lösbar) ist. Kann man abschätzen, ab welcher Kandidatenanzahl (nach Ausdünnung der Doppel) ein Sudoku eindeutig ist oder wie macht man das ?
  Mit Zitat antworten Zitat