Verwendung des Pipe-Operators
Funktionen hintereinander schalten
Wir verändern das Umkehrverfahren ein wenig. Wir benutzen eine zusätzliche Zahl, um die Länge der Anfangs- und Endteile einer Zeichenkette abzuspalten.
MORGEN 2 -> MO RG EN -> OM GR NE -> OMGRNE HITZEFREI 2 -> HI TZEFR EI -> IH RFEZT IE -> IHRFEZTIE HITZEFREI 3 -> HIT ZEF REI -> TIH FEZ IER -> TIHFEZIER
Ziel ist es, das so abgeänderte Umkehrverfahren mit einer Funktion verschluesselterText
mit folgendem Verhalten zu implementieren.
Signatur:
verschluesselterText: String -> Int -> -> String
Beispiele:
verschluesselterText "MORGEN" 2 -> "OMGRNE"
verschluesselterText "HITZEFREI" 2 -> "IHRFEZTIE"
verschluesselterText "HITZEFREI" 3 -> "TIHFEZIER"
...
Hier der Ansatz für eine Implementierung der Funktion verschluesselterText
, bei der zusätzlich zum Text auch eine Zerlegungslänge übergeben wird:
Aufgabe 1
Den Pipe-Operator verwenden
Im obigen Code werden mehrere Funktionen hintereinandergeschaltet, wie z.B. zur Berechnung des mittleren Teils:
Beim Hintereinderschalten von Funktionen wird im vorliegenden Beispiel das Ergebnis einer Funktionsanwedung an die nächste Funktion weitergereicht. In einigen Fällen kann man dann mit Hilfe des Pipe-Operators eine alternative Schreibweise nutzen.Der REPL-Dialog demonstriert einige Beispiele:
Aufgabe 2
Aufgabe 3
Schreibe die Funktion verschluesselterText
mit Hilfe des Pipe-Operators um.
Aufgabe 4
Das abgewandelte Verfahren liefert bei einer unvorsichtigen Wahl der Abspaltlänge merkwürdige Ergebnisse (z.B.: > verschluesselterText "HITZEFREI" 6 -> "FEZTIHIERFEZ" : String
). Untersuche und erkläre das.