Aufgabenblatt 3: Einführung in das Symbolische Programmieren CIS, WS 2010
=====================================================================
Abgabe: Am Montag, 08.11. 8.00 Uhr durch die Abgabemaske auf der Kursseite
Aufgabe 6 6.1)
Schreiben Sie ein später-als Prädikat mit dem man zwei Uhrzeiten vergleichen kann. Uhrzeiten wie 17:59 sollen als Paare natürlicher Zahlen wie (17,38) dargestellt werden. Das später-als Prädikat soll wahr sein, wenn die durch Stunden und Minuten dargestellte erste Zeit kleiner als die durch Stunden und Minuten dargestellte zweite Zeit ist.
6.2)
Schreiben Sie Fakten für einige ICE Zugverbindungen von München etwa ICE 720 (münchen, nürnberg, 10,55,11,57) , (münchen,würzburg,10,55,12,54)...und einige von Stuttgart
(URLs für Abfahrtstafeln
http://reiseauskunft.bahn.de/bin/bhftafel.exe/dn?
input=8000261&boardType=dep&time=actual&productsDefault=1111101&start=yes) http://reiseauskunft.bahn.de/bin/bhftafel.exe/dn?
evaId=8000096&boardType=dep&time=actual&productsDefault=1111101&dateBegin=26.05.05&start=yes
6.3)
Schreiben Sie ein Prädikat zugverbindung(...,...,...,....,...,...) das, ICE Verbindungen (nicht nur direkte) zwischen zwei Städten berechnet. Die Verbindungen sollen innerhalb eines Tages liegen.
6.4)
Schreiben Sie ein Prädikat schnelle_zugverbindung(...) für das die Umsteigezeit weniger als eine Stunde beträgt.
Aufgabe 7
7.1) Definieren sie geometrische Objekte in Prolog. Ein Punkt (1,2) im Koordinatensystem soll durch die zweistellige Struktur point(1.2) repräsentiert werden. Ein Segment zwischen zwei Punkten segment(point(1,2), point(2,3)). Ein Dreieck durch drei Punkte.
7.2) Definieren Sie Regeln horizontal und vertikal für alle horizontalen bzw vertikalen Segmente.
7.3) Definieren Sie nun ein Viereck. Definieren Sie die Regel regular(R). Diese soll dann wahr sein, wenn wenn R ein Viereck ist, dessen Seiten vertikal bzw horizontal sind.
Aufgaben 8
Betrachten Sie Alternativen für das predecessor Programm.
8.1)
predecessor(X,Z) :- parent(X,Z).
predecessor(X,Z) :-
parent (Y,Z), predecessor (X,Y).
Fragen:
a) handelt es sich um eine korrekte Definition der Nachfolgerrelation. Wenn ja, in welcher Weise unterscheidet sich das Programm von dem in der Übung als Lösung zu Aufgabe 4 angegebenen.
b) betrachten Sie auch : predecessor(X,Z) :-
parent (Y,Z), predecessor (X,Y).
predecessor(X,Z) :- parent(X,Z).
%%%%%%
predecessor(X,Z) :- parent(X,Z).
predecessor(X,Z) :- predecessor (X,Y), parent (Y,Z).
%%%%%%%%%
predecessor(X,Z) :- predecessor (X,Y), parent (Y,Z).
predecessor(X,Z) :- parent(X,Z).
Geben Sie jeweils an ob das Programm für alle Eingaben terminiert und inwieweit es sich anders verhält als die ursprüngliche Version.