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