Delphi Projekt von Karsten Schwalbe im Schuljahr 2003/2004 history menue Letztmalig dran rumgefummelt: 26.03.04 15:26:02

Grundprinzip: Mit den bekannten Programmstrukturen sowie einer gewissen Verfügbarkeit der Variablen- und Konstantenmodelle soll eine kleine Steuerungsaufgabe für einen Prozeß aus Deiner Umwelt gestaltet werden.

1. Aufgabe, Lösungsprinzip und Hinweise
2. Die Dokumentation und Systembeschreibung
3. Compilierte .EXE-Datei, Units und Formulare
4. Copyrights

1. Aufgabe, Lösungsprinzip und Hinweise history menue scroll up
Aufgabe war es das 8-Damen-Problem zu lösen, d. h. alle Möglichkeiten zu finden, wie man 8 Damen auf einem Schachbrett anordnet ohne das sie sich bedrohen, also in einer Spalte, Reihe oder Diagonale stehen. Aus der Lösungen kann man eine Teilmenge der echten Lösungen herausfiltern. In dieser Menge ergibt sich kein Element durch Spiegelung oder Drehung eines anderen Elements. Außerdem sollte die Möglichkeit geschaffen werden, den 'Gedankengang' des Computers graphisch darzustellen.

siehe auch "Schach + Mathematik" von J.Gik

Achtung - bitte beachten Sie folgende Hinweise.

Um die graphische Darstellung einer Damenaufstellung zu sehen, klickt man einfach auf den entsprechenden Listeneintrag.
Die Buttons erklären sich selbst. Die Buttons mit Kreuz stellen Damen dar.
Lösungsprinzip: Durch systematisches Probieren und Feststellen von Widersprüchen werden die Damenstellungen festgelegt.

2. Die Dokumentation und Systembeschreibung history menue scroll up

 

Um alle Lösungen herauszubekommen werden in den verschachtelten for-Schleifen die Kombinationen der 8 verschieden y-Koordinaten der Damen durchprobiert. Da 2 Damen nicht die gleiche x-Koordinate haben dürfen, gilt ohne Beschränkung der Allgemeinheit, dass die erste Dame in der ersten Spalte ist, die zweite in der zweiten, usw.. Steht eine der y-Koordinaten im Widerspruch zu den anderen Koordinaten (if-Anweisung) wird eine neue y-Koordinate dieser Dame ausprobiert. Zum Widerspruch kommt es, wenn die y-Koordinate der Dame einer y-Koordinate der vorigen Damen entspricht (gleiche Zeile) oder wenn der Betrag der Differenz zweier y-Koordinaten dem Betrag der Differenz zweier entsprechender x-Koordinaten entspricht (Diagonale). Da ich nicht wusste wie man den Betrag realisiert, habe ich das beide Beträge quadriert, was zu einer äquivalenten Aussage führt. Da die x-Koordinaten bekannt sind, kann man für das Quadrat der Beträge der Differenzen der x-Koordinaten konkrete Zahlen angeben. Führen alle 8 y-Koordinaten zu keinem Widerspruch (die x-Koordinaten führen ja sowieso zu keinem Wiederspruch), werden sie in Schachschreibweise in einem Listeneintrag gespeichert. Mit Hilfe der 2
Koordinaten kann die Dame nun die gleiche Position wie das aus der Liste gefolgerte Schachfeld annehmen.
Um die Darstellung Lösungen herauszubekommen, verläuft das Ganze im wesentlichen wie oben beschrieben, nur dass nach der Auswahl
der y-Koordinate einer Dame, diese Wahl durch das Verschieben der Dame graphisch dargestellt wird. Die nachfolgenden Damen werden zu ihrer
Ausgangsstellung zurückgebracht. Durch 'Refresh' wird die Grafik aktualisiert und durch "Sleep" wird eine Verzögerung eingebaut.
Um die "echten" Lösungen herauszufiltern wird ein Listeneintrag als Original angesehen. Die nachfolgenden Listeneintrag werden untersucht, ob sie mit einem Abbild des Originals (durch mathematische Gleichungen) übereinstimmt. Wenn ja, wird dieser Eintrag gelöscht. Danach wird der 2. Eintrag als Original gesehen und die Routine wiederholt sich. Dies wiederholt sich, bis der letzte Eintrag Original ist .


3. Compilierte EXE-Datei, Units und Formulare history menue scroll up

 

 

Formular zum Programm

... und hier das Projekt als lauffähige .EXE-Datei

Der Screenshot enthält nur einen Teil des Quelltextes, da dieser wesentlich größer als ein Fenster ist.

Screenshot der Unit

Unit zum Download im TXT-Format


4. Copyrights history menue scroll up

 

© die Urheberrechte liegen bei: Karsten Schwalbe
die Arbeit wurde im Rahmen des Unterrichts Informatik Klasse 10 im Schuljahr 2003/2004 angefertigt
die Aufgabe wurde durch J.Gik entwickelt
Bearbeitungszeit: 3 Wochen