Lösen eines logischen Puzzles
... [ Seminarthemen SS01
] ... [ Inhaltsverzeichnis ] ... [
Verbesserte Ausgabe ] ...
Übersicht: Lösen eines logischen Puzzles
Analyse von logischen Puzzlen
Der Kenntnisstand reicht jetzt schon fast aus, um logische Puzzle zu lösen.
Die einzige Frage, die man sich jetzt noch stellen sollte ist: Existiert
schon eine Rangfolge/Ordnungsrelation bei einer Eigenschaft?
Als Ordnungsrelation kann zum Beispiel die Eigenschaft Monat angesehen
werden, denn man weiß, daß der Februar vor dem April kommt
und daß drei Monate nach dem Mai der August folgt. Dagegen kann man
bei Namen keine Vergleiche, wie Klaus ist 2 mehr/größer als
Alfred, aufstellen.
In der nachstehenden Tabelle sind die beiden Möglichkeiten und
ihre Vorgehensweise aufgelistet.
Existiert Ordnungsrelation? |
nein
|
ja
|
Beispiel |
Vorname - Nachname - Stadt - Sportart |
Monat - Vorname - Nachname - Sportart |
Wertebereich festlegen
|
Klaus :: 1,
Alfed :: 2,
Manfred :: 3,
Werner :: 4,
ListeNachname :: 1..4,
ListeStaedte :: 1..4,
ListeSportart :: 1..4, |
ListeVorname :: 1..12,
ListeNachname :: 1..12,
ListeSportart :: 1..12,
|
mögliche Einschränkungen aufgrund von Aussagen |
Alfred #= Frankfurt,
Manfred ## Hochsprung, |
Schroeder ## Radfahren,
Karsten + 2 #= Fechten, |
Die Aussage der letzte Einschränkung (Karsten + 2 #= Fechten)
könnte etwa so lauten:
Der Fechter wurde 2 Monate nach Karsten Sportler des Monats.
Jetzt dürfte es kein Problem mehr sein, die Aufgabe Der Installateur
Rudi Rohrfrei zu lösen.
Aufgabenstellung
Der Installateur Rudi Rohrfrei hatte letzte Woche fünf schwierige
Aufgaben zu erledigen. Können Sie anhand der folgenden Informationen
herausfinden, an welchem Wochentag er welche Person besucht, wo diese wohnt
und welches Problem er bei jeder Adresse zu bewältigen hatte?
Tage: Monatg, Dienstag, Mittwoch, Donnerstag, Freitag
Kundennamen: Fräulein Bogo, Frau Clemens, Frau Hasel, Herr
Magner, Herr Pütz
Orte: Auf der Aue, Buchengasse, Finkenweg, Hauptstraße,
Max-Frisch-Allee
Probleme:Waschmaschine, Zentralheizung, Rohrbruch, Wasserhahn,
Abfluß
-
Am Montag wurde Rudi von einer Frau gerufen. Er hatte ihr
aber keine neue Waschmaschine installieren müssen.
-
Rudi reparierte Herrn Magners Rohrbruch einen Tag bevor er in den
Finkenweg
fuhr.
-
Einen Tag nachdem er bei der Adresse Auf der Aue gewesen ist, wurde
er gerufen, um einen verstopften Abfluß zu reinigen. Die Waschmaschine
wurde nicht in der Buchengasse installiert, wo übrigens nicht
Herr Pütz wohnt.
-
Frau Hasel, die keinen undichten Wasserhahn beanstandete,
wohnt in der Hauptstraße. Am Donnerstag arbeitete Rudi
in der Max-Frisch-Allee.
-
Fräulein Bogo war Rudis Freitagskundin. Sie hatte
keinen verstopften Abfluß.
-
Ein Mann bekam die Zentralheizung installiert.
Quelltext
% Einbinden der Bibliothek
:- use_module(library(fd)).
start:-
% Variabeln in einer Liste deklarieren
L= [FB,FC,FH,HM,HP,
%Abkürzungen für die Kunden
OA,OB,OF,OH,OM,
%Abkürzugen für die Orte
WM,ZH,RB,WH,AF],
%Abkürzungen für die Probleme
% Wertebereich der Listenelemente festlegen
L :: 1..5,
% die Werte einer jeweiligen Eigenschaft muessen verschieden
sein
alldistinct([FB,FC,FH,HM,HP]),
alldistinct([OA,OB,OF,OH,OM]),
alldistinct([WM,ZH,RB,WH,AF]),
%Einschraenkungen für 1 Aussage
HM ## 1, HP ## 1, WM ## 1,
% Aussage 2
HM #= RB, HM + 1 #= OF,
% Aussage 3
OA + 1 #= AF, WM ## OB, OB ## HP,
% Aussage 4
FH ## WH, FH #= OH, OM #= 4,
% Aussage 5
FB #= 5, FB ## AF,
% Aussage 6
FB ## ZH, FC ## ZH, FH ## ZH,
% vollständige Auswertung aller Elemente der Liste
L
labeling(L),
%Ausgabe
write ("Frau Bogo: "), writeln(FB),
write ("Frau Clement: "), writeln(FC),
write ("Frau Hasel: "), writeln(FH),
write ("Herr Magner: "), writeln(HM),
write ("Herr Pütz: "), writeln(HP),
write ("Auf der Aue: "), writeln(OA),
write ("Buchengasse: "), writeln(OB),
write ("Finkenweg: "), writeln(OF),
write ("Hauptstrasse: "), writeln(OH),
write ("Max-Frisch-Allee: "), writeln(OM),
write ("Waschmaschine: "), writeln(WM),
write ("Zentralheizung: "), writeln(ZH),
write ("Rohrbruch: "), writeln(RB),
write ("Wasserhahn: "), writeln(WH),
write ("Abfluss: "), writeln(AF).
Lösung
Nach dem Compilieren des Quelltextes, der Eingabe start (im Query Entry)
mit anschließender Bestätigung durch die Enter-Taste, erhält
man die Lösung. Die Zahl 5 hinter Frau Bogo bedeutet, daß Sie
Freitag den Installateur bei sich hatte. Die 1 hinter der Ausgabe Buchengasse
sagt aus, daß Rudi Rohrfrei am Montag dort war.
Lösung :
Monatg - Frau Clement - Buchengasse - Wasserhahn
Dienstag - Herr Pütz - Auf der Aue - Zentralheizung
Mittwoch - Frau Hasel - Hauptstrasse - Abfluß
Donnerstag - Herr Magner - Max-Frisch-Allee - Rohrbruch
Freitag - Frau Bogo - Finkenweg - Waschmaschine
Nachteil
Wie man leicht erkennen kann, ist die Lösung im Bezug auf die Ausgabe
nicht akzeptabel. Man muß sich die zueinander gehörenden Ausprägungen
heraussuchen. Bei größeren Problemstellungen, man denke an das
Problem Sportler des Monats mit jeweils 12 Ausprägungen je Eigenschaft,
wird die Ausgabe sehr unübersichtlich.
... [ Seminarthemen SS01
] ... [ Inhaltsverzeichnis ] ... [
Verbesserte Ausgabe ] ...