Einf. in das symbolische Programmieren CIS, SS 2002, H.Leiss ================================================================= Abgabe: Mittwoch, 5.06.02 in der Vorlesungsstunde. ------------------------------------------------- Aufgabe 9 8 Punkte --------- a) Schreibe ein Praedikat flachmachen1(+Liste von Listen,-Ausgabeliste), das aus einer Eingabeliste [Liste1,Liste2,...] von Listen von Grundtermen eine Ausgabeliste [Element1,Element2,...] berechnet, in der zuerst die Elemente von Liste1, dann die von Liste2, usw. auftreten. Zum Beispiel soll gelten: flachmachen1([[a,b],[],[c],[d,e]], [a,b,c,d,e]). Hinweis: - Fall 1: die Eingabeliste ist []. Dann ist die Ausgabeliste = ? - Fall 2: die Eingabeliste ist [Liste1|Listen]. Wo sollen die Elemente von Liste1 in der Ausgabeliste stehen? Was muss mit den weiteren Listen gemacht werden? Beachte: - Listen = [Liste2,...] ist kuerzer ist als - Eingabeliste = [Liste1,Liste2,...]. Also koennen Sie das schon flachmachen. ... b) Aendere a) so, dass in der Eingabeliste auch Elemente vorkommen duerfen, die keine Listen sind (aber Grundterme), und die dann als Elemente in die Ausgabe uebernommen werden. 6 Punkte Zum Beispiel soll gelten: flachmachen2([[a,b],a,[],b,[c],f,[d,e]], [a,b,a,b,c,f,d,e]). Hinweis: Sie muessen unterscheiden, ob ein Element der Eingabeliste eine Liste ist oder nicht. Aufgabe 10 4 Punkte ---------- Wir betrachten nochmal den kreisfreien Graphen (G,kante) kante(1,2). kante(1,3). kante(2,4). kante(2,5). kante(3,4). kante(4,7). kante(5,6). kante(6,7). aus Aufgabe 3 und die Definition von Wegen durch weg(X,Y) :- kante(X,Y). weg(X,Y) :- kante(X,Z), weg(Z,Y). Schreiben Sie ein Praedikat weg/3, das im postiven Fall den durchlaufenen Weg als Liste von Punkten ausgibt: weg(Ausgangspunkt,Endpunkt,Liste der besuchten Punkte). Zum Beispiel sollte gelten: weg(2,7,[2,4,7]) und weg(2,7,[2,5,6,7]).