Universität des Saarlandes ¨Ubungsblatt 9: Programmierung (WS

Werbung
RSI
T
IS
I
UN
SA
R
VE
AS
FR 6.2 – Informatik
Prof. Dr. Reinhard Wilhelm
Peter Mirold
Jörg Bauer
S
Universität des Saarlandes
A V EN
I
10.Januar 2002
Übungsblatt 9: Programmierung (WS 2001)
Abgabetermin: 17. Januar 2002
Aufgabe 1 (2+3 Punkte) Datentyp option
(a) Schreiben Sie die Funktion finde von Blatt 8, Aufgabe 2, so um, dass sie NONE zurückgibt, falls kein Element gefunden wird und Typ ’a list * (’a -> bool) -> ’a
option hat.
(b) Schreiben Sie die Funktion lookup aus der Vorlesung so um, dass sie ein gefundenes
Element zurückgibt. lookup soll Typ (’a * ’a -> bool) * ’a btree * ’a
-> ’a option haben.
Aufgabe 2 (3+3 Punkte) Symbolisches Differenzieren
Wir stellen Polynome n-ten Grades (n 0) über X mit ganzzahligen Koeffizienten als Liste
ganzer Zahlen dar. Hierbei sei die Liste k 0 k1 kn die Darstellung des Polynoms kn X n k X k . Wir definieren type polynom = int list.
1
0
(a) Schreiben Sie eine Funktion prettyprint: polynom -> string, die ein Polynom als Zeichenkette ausgibt. Hierbei sollen Potenzen mit Koeffizientem 0 (0 X k ) nicht
ausgegeben und Potenzen mit Koeffizientem 1 (1 X k ) ohne die 1 (X k ) ausgegeben werden. werden. Beispiel: prettyprint 0 1 0 2
=”X + 2 Xˆ 3”. Hinweis: Die eingebaute
Funktion print: string -> unit gibt Zeichenketten auf dem Bildschirm aus.
(b) Schreiben Sie eine Funktion diff: polynom -> polynom, die die Ableitung eines
Polynoms berechnet.
Aufgabe 3 (3+3 Punkte) Traversieren von B äumen
(a) Schreiben Sie eine Funktion summe: int btree -> int, die die Summe der Knotenmarkierungen eines Baumes berechnet.
(b) Schreiben Sie eine Funktion relabel: ’a btree * (’a -> ’b) -> ’b btree,
wobei relabel t f den Baum t zurückgibt, in dem jede Markierung x durch f x ersetzt
ist.
Aufgabe 4 (5 Punkte) AVL-Eigenschaft
Man sagt, dass ein binärer Baum die AVL-Eigenschaft besitzt, wenn für alle inneren Knoten
gilt, dass die Höhe des linken und des rechten Unterbaums sich um maximal 1 unterscheidet.
Schreiben Sie eine Funktion avl: ’a tree -> bool, die entscheidet ob ein binärer Baum
die AVL-Eigenschaft besitzt.
Aufgabe 5 (8 Punkte) Pretty Printing
Schreiben Sie eine Funktion pretty: ’a btree * (’a -> string) -> unit, die
einen binären Baum wie folgt auf dem Bildschirm ausgibt
--> 1
--> 5
--> 7
--> 6
--> 8
--> 2
--> 4
--> 9
--> 3
Das zweite Argument ist die Funktion, die benötigt wird, um Werte des Typs ’a in Strings
umzuwandeln, z.B. Int.toString. Hinweis: Zeilenumbruch innerhalb eines Strings erreicht
man durch ” n”. Weitere Sonderzeichen findet man in der Moscow ML Language Overview.
Herunterladen