• Keine Ergebnisse gefunden

6.1 map, foldl, foldr, filter 5 Punkte

N/A
N/A
Protected

Academic year: 2022

Aktie "6.1 map, foldl, foldr, filter 5 Punkte"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Christoph Lüth Thomas Barkowsky Andreas Kästner Gerrit Marquardt Tobias Haslop Matz Habermann Berthold Hoffmann Praktische Informatik 3 WS 18/19

6. Übungsblatt

Ausgabe: 20.11.18 Abgabe: 27.11.18 12:00

Ziel dieses Übungsblattes ist ein gründliches Verständnis vonmap, f i l t e r , fo ld r/f o l d l, sowie darüber hinaus η-Kontraktion, partielle Anwendung und Funktionen höherer Ordnung im Allgemeinen. Deshalb geht es in diesem Übungsblatt mehr als bei den vorherigen nicht nur darum, dass die Tests durchlaufen, sondern dass Sie die Konzepte dahinter verstehen.

Das bedeutet bei der Bewertung wird ein besonderes Augenmerk darauf gelegt, ob Sie die Funktionen höherer Ordnung auf eine möglichst gute Weise verwenden. In diesem Übungsblatt ist daher die Verwendung von rekursiv definierten Funktionen verboten. Darüber hinaus müssen Sie für dieses Übungsblatt auchkeine eigenen Testsschreiben.

6.1 map, foldl, foldr, filter 5 Punkte

Schreiben Sie folgende Funktionen mithilfe der Funktionenmap, f i l t e r , f ol drundf o l d l. (1) Berechnet das Produkt einer Liste von ganzen Zahlen.

prod :: [ I n t ]→ I n t Beispiel:

prod [1 . . 5] 120

(2) Keines der Elemente der Liste ist gerade.

noneIsEven :: [ I n t ] → Bool Beispiel:

noneIsEven [5 ,7] True

noneIsEven [ 4 ] False

(3) Berechnet die Summe der Längen der Zeichenketten.

lengthSum :: [ String ] → I n t Beispiel:

lengthSum [ " Hallo " , "DU! " ] 8

(4) Eine Wertetabelle von 0 bis 150 der Funktionx2+2x+7.

functionLookupTable :: [ ( Integer , Integer ) ] Beispiel:

functionLookupTable ! ! 1 (1 , 10)

(5) Gibt alle Zahlenwerte zurück, bei denen der zugeordnete String gleich dem zweiten Parameter ist.

getByKey :: [ ( String , I n t ) ] → String → [ I n t ] Beispiel:

— Seite 1 von 2 —

(2)

6. Übungsblatt Praktische Informatik 3, WS 18/19

getByKey [ ( "a" ,2) , ( "b" ,3) , ( "a" ,6) , ( "c" , 4) ] "a" [2 ,6]

6.2 Andere Funktionen in base 5 Punkte

Schauen Sie sich für diese Aufgabe zuerst die Funktionen aus Data.List an zum Suchen und Erstellen von Listen und implementieren Sie anschließend auf möglichst geschickte Weise die nachfolgenden Funktionen.

(1) Gibt die Liste der Partialsummen zurück.

partialSums :: Num a ⇒ [a] → [a]

Beispiel:

partialSums [1 ,2 ,3 ,4] [0 ,1 ,3 ,6 ,10]

(2) Füllt die Strings am Ende mit Freizeichen auf, so dass alle Strings die gleiche Länge haben; die Länge aller Strings soll die Länge des längsten Strings in der Eingabeliste sein. (Die Strings sollen alle endlich sein.) toSameLength :: [ String ] → [ String ]

Beispiel:

toSameLength [ " Christoph " , "Lueth" ] [ " Christoph " , "Lueth " ]

(3) Sortiert die inneren Listen nach ihrer Länge in aufsteigender Reihenfolge.

sortByLength :: [ [ a ] ] → [ [ a ] ] Beispiel:

sortByLength [[3 ,4 ,5] , [11] , [ 1 ] ] [ [ 1 1 ] , [ 1 ] , [3 ,4 ,5]]

(4) WiesortByLength, allerdings wird zusätzlich der Index zurückgegeben, den die jeweilige Liste vor dem Sortieren hatte.

sortByLengthRememberingIndex :: [ [ a ] ] → [ ( I n t , [a ] ) ] Beispiel:

sortByLengthRememberingIndex [ "abc" , "p" , "xx" ] [ (1 , "p" ) , (2 , "xx" ) , (0 , "abc" ) ]

(5) Wendet die zweite Funktion auf die inneren Listen in einer Liste von Listen an, und die erste Funktion auf jede Ergebnisliste.

innerOuterMap :: ( [ b] → c) → (a →b) → [ [ a ] ] → [ c ] Beispiel:

innerOuterMap sum (∗3) [ [ 1 . . 4 ] , [ 5 , 6 ] ] [30 ,33]

— Seite 2 von 2 —

Referenzen

ÄHNLICHE DOKUMENTE

Was sind die wesentlichen Gemeinsamkeiten, und was sind die wesentlichen Unterschiede zwischen algebraischen Datentypen in Haskell, und Objekten in Java?. Welche zwei Arten

 Analysis of the security environment results in security objectives that counter the identified threats and address identified organizational security policies and assumptions.

 Safety standards such as IEC 61508, DO-178B suggest development according to V-model.  Specification and implementation linked by verification and validation.  Variety

Source: Ericson (2005) 1) Hazards, mishaps and risk are not chance events. 2) Hazards are created during design. 3) Hazards are comprised of three components (HE, IM, T/T). 4)

State Machine Diagram Sequence Diagram Activity Diagram Requirement Diagram *.. * Not

 In white-box tests, we derive test cases based on the structure of the program (structural testing).  To abstract from the source code (which is a purely syntactic artefact), we

The basic problem of static program analysis: virtually all interesting program properties are undecidable.. (cf.

In der Methode sollen mit einer Schleife die übergebenen Integer des Arrays durchlaufen werden und für jede Zahl unter 1 eine Leerstelle und für jede andere Zahl ein * in der