AGB  ·  Datenschutz  ·  Impressum  







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

Mal wieder ein Sudoku Problem

Ein Thema von Furious Dragon · begonnen am 21. Mai 2006 · letzter Beitrag vom 30. Jun 2006
 
Olli
(Gast)

n/a Beiträge
 
#9

Re: Mal wieder ein Sudoku Problem

  Alt 21. Mai 2006, 21:44
Okay, gehen wir mal durch marabu's Code ... beachte die Kommentarzeilen!

Delphi-Quellcode:
// Col steht für "column" - also Spalte
// Row steht für Zeile

// Konvertiert den den Spalten- und Zeilenindex innerhalb des großen
// 9x9-Feldes in den jeweiligen Index des 3x3-Blocks und innerhalb des
// 3x3-Blocks
function BigToSmall(
// iBigCol und iBigRow sind die Indeces innerhalb des großen 9x9-Feldes
  iBigCol, iBigRow: Integer;
// variable Parameter welche mit Werten gefüllt werden
  var iBlockCol, iBlockRow, iSmallCol, iSmallRow: Integer
): Boolean;
begin
// Überprüfung ob sich die Eingabewert im gültigen Bereich befinden
  Result := (iBigCol in [0..8]) and (iBigRow in [0..8]);
// Füllen der variablen Parameter mit den Werten
  if Result then
  begin
// "Blockspalte" ist der Index der Spalte eines 3x3er Blocks [1]
    iBlockCol := iBigCol div 3;
// "Blockzeile" ist der Index der Zeile eines 3x3er Blocks [1]
    iBlockRow := iBigRow div 3;
// "kleine Spalte" ist der Index der Spalte innerhalb des 3x3er Blocks [2]
    iSmallCol := iBigCol mod 3;
// "kleine Zeile" ist der Index der Zeile innerhalb des 3x3er Blocks [2]
    iSmallRow := iBigRow mod 3;
  end;
end;

// Gegenteil der obigen Funktion BigToSmall()
function SmallToBig(
  iBlockCol, iBlockRow, iSmallCol, iSmallRow: Integer;
  var iBigCol, iBigRow: Integer
): Boolean;
begin
// Überprüfung ob sich die Eingabewert im gültigen Bereich befinden
  Result := (iBlockCol in [0..2]) and (iBlockRow in [0..2])
    and (iSmallCol in [0..2]) and (iSmallRow in [0..2]);
// Füllen der variablen Parameter mit den Werten
  if Result then
  begin
// Spalte innerhalb des 9x9-Feldes anhand der Eingabe berechnen
    iBigCol := 3 * iBlockCol + iSmallCol;
// Zeile innerhalb des 9x9-Feldes anhand der Eingabe berechnen
    iBigRow := 3 * iBlockRow + iSmallRow;
  end;
end;
Und jetzt gucken wir, wie das 9x9-Feld aussieht, wenn wir es nach den oben in den Kommentaren in eckige Klammern gesetzten Ziffern aufschlüsseln:

Spaltenindeces: iBlockCol nach [1]
Code:
0  0  0  1  1  1  2  2  2
0  0  0  1  1  1  2  2  2
0  0  0  1  1  1  2  2  2
0  0  0  1  1  1  2  2  2
0  0  0  1  1  1  2  2  2
0  0  0  1  1  1  2  2  2
0  0  0  1  1  1  2  2  2
0  0  0  1  1  1  2  2  2
0  0  0  1  1  1  2  2  2
Zeilenindeces: iBlockRow nach [1]
Code:
0  0  0  0  0  0  0  0  0
0  0  0  0  0  0  0  0  0
0  0  0  0  0  0  0  0  0
1  1  1  1  1  1  1  1  1
1  1  1  1  1  1  1  1  1
1  1  1  1  1  1  1  1  1
2  2  2  2  2  2  2  2  2
2  2  2  2  2  2  2  2  2
2  2  2  2  2  2  2  2  2
Spaltenindeces: iSmallCol nach [2]
Code:
0  1  2  0  1  2  0  1  2
0  1  2  0  1  2  0  1  2
0  1  2  0  1  2  0  1  2
0  1  2  0  1  2  0  1  2
0  1  2  0  1  2  0  1  2
0  1  2  0  1  2  0  1  2
0  1  2  0  1  2  0  1  2
0  1  2  0  1  2  0  1  2
0  1  2  0  1  2  0  1  2
Zeilenindeces: iSmallRow nach [2]
Code:
0  0  0  0  0  0  0  0  0
1  1  1  1  1  1  1  1  1
2  2  2  2  2  2  2  2  2
0  0  0  0  0  0  0  0  0
1  1  1  1  1  1  1  1  1
2  2  2  2  2  2  2  2  2
0  0  0  0  0  0  0  0  0
1  1  1  1  1  1  1  1  1
2  2  2  2  2  2  2  2  2
Vielleicht kannst du jetzt begreifen, was gemeint war ...
  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 14:54 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