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ß

  1. Am Montag wurde Rudi von einer Frau gerufen. Er hatte ihr aber keine neue Waschmaschine installieren müssen.
  2. Rudi reparierte Herrn Magners Rohrbruch einen Tag bevor er in den Finkenweg fuhr.
  3. 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.
  4. Frau Hasel, die keinen undichten Wasserhahn beanstandete, wohnt in der Hauptstraße. Am Donnerstag arbeitete Rudi in der Max-Frisch-Allee.
  5. Fräulein Bogo war Rudis Freitagskundin. Sie hatte keinen verstopften Abfluß.
  6. 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.
 
 
Nach oben

... [ Seminarthemen SS01 ] ... [ Inhaltsverzeichnis ] ... [ Verbesserte Ausgabe ] ...