Praktische Informatik 1 Aufgabenblatt Nr. 2 Aufgabe 1 (30 Punkte

Werbung
Prof. Dr. Manfred Schmidt-Schauß
Künstliche Intelligenz/Softwaretechnologie
Fachbereich Biologie und Informatik/ Institut für Informatik
Johann Wolfgang Goethe-Universität Frankfurt am Main
Praktische Informatik 1
Wintersemester 2004/2005
Aufgabenblatt Nr. 2
Abgabe: Mittwoch 10. November 2004 vor! der Vorlesung
Aufgabe 1 (30 Punkte)
Implementieren Sie in Haskell unter Verwendung der logischen Operatoren &&, || und not sowie
der Vergleichsoperatoren <, <=, ==, >, >= und /= folgende Prädikate (d.h. Funktionen, deren
Rückgabewert einer der Wahrheitswerte True oder False ist) auf Zahlen:
• P1 (a) ist genau dann wahr, wenn a im Intervall ]10, 100[ liegt.
(5 Punkte)
• P2 (a) ist genau dann wahr, wenn a nicht im Intervall ]10, 100[ liegt.
(3 Punkte)
• P3 (a, b) ist genau dann wahr, wenn b mindestens so groß wie a, aber nicht mehr als dreifach
so groß wie a ist.
(6 Punkte)
• P4 (a, b, c) ist genau dann wahr, wenn zwei der drei Zahlen a,b,c gleich sind, die dritte Zahl
aber ungleich der beiden anderen ist.
(9 Punkte)
• P5 (a, b, c) ist genau dann wahr, wenn P1 für alle drei Zahlen a,b,c erfüllt ist, oder P1 für
alle drei Zahlen nicht erfüllt ist.
(7 Punkte)
Aufgabe 2 (30 Punkte)
Implementieren Sie in Haskell mit Hilfe der Fallunterscheidung eine Funktion einWurf, die den
neuen Punktestand nach einem Wurf im Darts-Spiel von Aufgabenblatt 1 berechnet.
Die Funktion einWurf sollte sieben formale Parameter haben: Das Segment (Zahl zwischen 1
und 25) und die Wertigkeit (Zahl zwischen 1 und 3) für jeden der drei geworfenen Dart-Pfeile,
sowie den Punktestand vor dem Wurf. Als Ergebnis soll sie den Punktestand nach dem Wurf
liefern.
Beachten Sie, dass die auf Aufgabenblatt 1 spezifizierten Regeln eingehalten werden, und dass
es auch Würfe gibt, die die Scheibe verfehlen (diese sollten Sie geeignet repräsentieren).
1
Aufgabe 3 (40 Punkte)
Es seien folgende Funktionsdefinitionen in Haskell gegeben:
f a b
= if f’ a a < 100 then b else g’ (a+1) (b-1)
f’ x y = if x * y < 0 then f’ x (-y) else x*y
g a b
= if a < f’ 1 1 then b else g’ (a-1) (b+2)
g’ a b = if a > b then (g 1 a) else (f a b)
a) Beantworten Sie für jede der vier Funktionen f, f’, g und g’ die Fragen:
– Welche Funktionen werden direkt referenziert?
(6 Punkte)
– Welche Funktionen werden referenziert?
(6 Punkte)
– Ist die Funktion direkt rekursiv?
(3 Punkte)
– Ist die Funktion rekursiv?
(3 Punkte)
b) Welche Paare der Funktionen f, f’, g und g’ sind verschränkt rekursiv?
(10 Punkte)
c) Definieren Sie formal den bereits in der Vorlesung für zwei Funktionen eingeführten Begriff
verschränkt rekursiv für Mengen von n ≥ 2 Funktionen.
(8 Punkte)
d) Welche Teilmengen von {f, f’, g, g’} sind entsprechend Ihrer Definition aus Aufgabenteil
c) verschränkt rekursiv?
(4 Punkte)
2
Herunterladen