Allgemeine Hinweise 1 Prolog Aussagenlogik und Resolution
Allgemeine Hinweise 1 Prolog Aussagenlogik und Resolution
Allgemeine Hinweise 1 Prolog Aussagenlogik und Resolution
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Listen, Listen, Listen<br />
Aufgabe 1<br />
Schreiben Sie ein Programm, das eine Liste de-dupliziert, also mehrfach enthaltene Elemente löscht, also<br />
[a, b, a, c] wird zu [a, b, c] oder [b, a, c].<br />
Aufgabe 2<br />
Schreiben Sie ein Programm, das jedes Element einer Liste verdoppelt, also [a, b, c] wird zu [a, a, b, b, c, c].<br />
Aufgabe 3<br />
Es gibt verschiedene Möglichkeiten, Listen umzudrehen. Hier sind zwei mögliche Programme:<br />
% reverse Version a<br />
reverse([], []).<br />
reverse([X|Xs], Zs) :- reverse(Xs, Ys), append(Ys, [X], Zs).<br />
% reverse Version b<br />
reverse([], []).<br />
reverse(Xs, Ys) :- reverse(Xs, [], Ys).<br />
reverse([X|Xs], Acc, Ys) :- reverse(Xs, [X|Acc], Ys).<br />
reverse([], Ys, Ys).<br />
• Welche der beiden Versionen gefällt Ihnen besser? Warum?<br />
• Zeichnen Sie den Proof-Tree für beide Programme, wenn der folgende Ausdruck ausgewertet wird:<br />
reverse([a, b, c], [c, b, a]).<br />
• Wie ist die Laufzeit der beiden Programme?<br />
Inspektion von Strukturen<br />
Aufgabe 1<br />
Was ergeben die folgenden Ausdrücke? Und warum?<br />
?- compo<strong>und</strong>(a).<br />
?- atom(a).<br />
?- compo<strong>und</strong>(X).<br />
?- atom(X).<br />
?- compo<strong>und</strong>(a(b)).<br />
?- atom(a(b)).<br />
?- compo<strong>und</strong>([]).<br />
?- atom([]).<br />
?- compo<strong>und</strong>([[]]).<br />
?- atom([[]]).<br />
Aufgabe 2<br />
Was ergeben die folgenden Ausdrücke? Und warum?<br />
?- functor(a, F, A).<br />
?- functor(father(michael, tyler), F, A).