Übungen
Aufgabe 1
Im folgenden REPL-Dialog fehlen die Ergebnisse.
> liste = [1,2,3]
[1,2,3] : List number
> 0::liste
...
> 0::0::liste
...
> [0]++liste
...
> liste++[0]
...
> liste
...
(a) Stelle Vermutungen auf, was an Stelle der drei Punkte jeweils erscheint. Überprüfe, indem du den Dialog selbst führst.
(b) Der Dialog verdeutlicht auch, dass die beiden Funktionen ::
und ++
jeweils neue Listen erzeugen.
Woran erkennt man das hier? Erläutere.
Aufgabe 2
Hier werden vordefinierte Listenfunktionen benutzt. Informiere dich vorab auf Elm - List, was die Funktionen leisten. Führe anschließend den folgenden REPL-Dialog und erkläre die Ergebnisse.
> List.range 1 10
...
> List.sum (List.range 0 20)
...
> List.repeat 3 'o'
...
> List.reverse (List.sort ['e','u','a','i','o'])
...
> (List.range 2 4) :: (List.range 6 8) :: []
...
> List.concat ((List.range 2 4) :: (List.range 6 8) :: [])
...
Hinweis: Man muss nicht alle diese vordefinierten Funktionen aktiv kennen. Man schlägt sie bei Bedarf in einer Dokumentation nach.
Aufgabe 3
Die Kursarbeit ist schlecht ausgefallen. Alle Noten sollen um 1 Punkt erhöht werden.
Signatur:
plus1: List Int-> List Int
Beispiele:
plus1 [2,5,7,4,10,12,3] -> [3,6,8,5,11,13,4]
Entwickle eine Funktionsdefinition für die Funktion plus1
. Nutze Rekursion.
Aufgabe 4
Die Kursarbeit ist schlecht ausgefallen. Es sollen alle Noten zusammengestellt werden, die unter 4 Punkte betragen.
Signatur:
unter4: List Int-> List Int
Beispiele:
unter4 [2,5,7,4,0,10,1,12,3] -> [2,0,1,3]
Entwickle eine Funktionsdefinition für die Funktion unter4
. Nutze Rekursion.
Aufgabe 5
Die Ergebnisse von Lottoziehungen werden mit Hilfe von Listen verwaltet.
module Lottozahlen exposing (..)
lottoziehungen: List (List Int)
lottoziehungen = [
[3,6,13,23,40,41],
[5,6,20,25,44,49],
[10,21,22,23,39,41],
[1,11,17,45,47,48]]
Entwickle eine Funktion, mit der man ermitteln kann, wie oft eine vorgegebene Zahl in den Ziehungen vorgekommen ist.