Morsecode berechnen
Morsecode automatisch erzeugen
Bisher hast du den Text MORSEN
und den entsprechenden Morsecode
-- --- ·-· ··· · ·-
manuell in die REPL eingegeben.
Der Morsecode soll aber natürlich automatisch berechnet werden.
Dazu benötigst du eine Funktion, die den Text in Morsecode umwandelt.
Gegeben ist eine Funktion charToMorse
, die ein einzelnes Zeichen in Morsecode umwandelt.
Du musst die interne Struktur der Funktion nicht verstehen, vermutlich ist sie aber dennoch
nachvollziehbar, auch wenn du case-Ausdrücke noch nicht kennst.
charToMorse : Char -> String
charToMorse c =
case c of
'A' -> "·-"
'B' -> "-···"
'C' -> "-·-·"
'D' -> "-··"
'E' -> "·"
'F' -> "··-·"
'G' -> "--·"
'H' -> "····"
'I' -> "··"
'J' -> "·---"
'K' -> "-·-"
'L' -> "·-··"
'M' -> "--"
'N' -> "-·"
'O' -> "---"
'P' -> "·--·"
'Q' -> "--·-"
'R' -> "·-·"
'S' -> "···"
'T' -> "-"
'U' -> "··-"
'V' -> "···-"
'W' -> "·--"
'X' -> "-··-"
'Y' -> "-·--"
'Z' -> "--··"
_ -> " "
Aufgabe 1
charToMorse
in der REPL.
Aufgabe 2
stringToMorse
, die eine Zeichenkette in Morsecode umwandelt.
Du kannst nicht die Funktion String.map
verwenden,
da sie eine Funktion erwartet, die ein Char in ein Char umwandelt.
Die Funktion charToMorse
wandelt aber ein Char in einen String um.
Du musst deshalb die Zeichenkette in eine Liste von Zeichen umwandeln.
Das geht mit der Funktion String.toList
.
Anschließend kannst du die Liste der Zeichen
mit der Funktion List.map
in eine Liste von Morsezeichen umwandeln.
Schließlich kannst du die Liste der Morsezeichen
mit der Funktion String.join
zu einer Zeichenkette zusammenfügen
und dabei ein Leerzeichen als Trennzeichen verwenden.
Anschließend kannst du die Funktion stringToMorse
nutzen,
um den Text MORSEN
in Morsecode umzuwandeln, z.B.:
main =
div []
[ text "MORSEN"
, text " "
, text (stringToMorse "MORSEN")
]
Aufgabe 3
MORSEN
und den entsprechenden Morsecode anzeigt.