Entwicklung einer Funktionsdefinition
Eine Funktionsdefinition entwickeln
Ziel ist es, das Umkehrverfahren mit einer Funktion verschluesselterText
mit folgendem Verhalten zu implementieren.
Signatur:
verschluesselterText: String -> String
Beispiele:
verschluesselterText "MORGEN" -> "ROMNEG"
verschluesselterText "HITZEFREI" -> "ZTIHEIERF"
...
Hier noch einmal das Umkehrverfahren - verdeutlicht anhand von zwei Beispielen:
MORGEN -> MOR GEN -> ROM NEG -> ROMNEG HITZEFREI -> HITZ E FREI -> ZTIH E IERF -> ZTIHEIERF
Die einzelnen Schritte des Umkehrverfahrens lassen sich mit geeigneten vordefinierten Funktionen zur Verarbeitung von Zeichenketten durchführen.
- Mit der Funktion
String.length
kann man die Länge einer Zeichenkette bestimmen. - Mit der Funktion
String.left
kann man den Anfangsteil einer Zeichenkette bestimmen. - Mit der Funktion
String.right
kann man den Endteil einer Zeichenkette bestimmen. - Mit der Funktion
String.reverse
kann man eine Zeichenkette umkehren. - Mit der Funktion
String.append
kann man Zeichenketten aneinanderhängen.
Aufgabe 1
Betrachte den Fall, dass eine Zeichenkette eine gerade Länge hat.
(a) Teste den folgenden Ausdruck in der REPL. Erläutere, was er beschreibt.
> String.reverse (String.left (String.length "MORGEN" // 2) "MORGEN")
...
(b) Ergänze den Ausdruck aus (a) so, dass damit Zeichenketten mit einer geraden Länge korrekt verschlüsselt werden..
> String.reverse (String.left (String.length "MORGEN" // 2) "MORGEN") ++ ...
...
Aufgabe 2
Entwickle mit Hilfe des Ausdrucks aus Aufgabe 1 (b) eine Funktionsdefinition für die Funktion verschluesselterText
.