Verschlüsselung mit einer Zuordnung
Eine Zuordnung festlegen
Wir betrachten als Beispiel die folgende Zuordnung:
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 | | | | | | | | | | | | | | | | | | | | | | | | | | G K X C S L Z U A H W D B M T Y E N J V P O I R F Q
Hier Implementierung in Elm könnte so erfolgen:
module Verschluesselung exposing (..)
zuordnung: Char -> Char
zuordnung zeichen =
case zeichen of
'A' -> 'G'
'B' -> 'K'
'C' -> 'X'
'D' -> 'C'
'E' -> 'S'
'F' -> 'L'
'G' -> 'Z'
'H' -> 'U'
'I' -> 'A'
'J' -> 'H'
'K' -> 'W'
'L' -> 'D'
'M' -> 'B'
'N' -> 'M'
'O' -> 'T'
'P' -> 'Y'
'Q' -> 'E'
'R' -> 'N'
'S' -> 'J'
'T' -> 'V'
'U' -> 'P'
'V' -> 'O'
'W' -> 'I'
'X' -> 'R'
'Y' -> 'F'
'Z' -> 'Q'
_ -> '?'
> import Verschluesselung exposing (..)
> zuordnung 'A'
'G' : Char
> zuordnung 'H'
'U' : Char
Aufgabe 1
Teste die Implementierung und erläutere alle Details in der Implementierung.
Die Zuordnung auf Texte anwenden
Wenn man ganze Texte (aus Großbuchstaben) verschlüsseln möchte, dann ist es günstig, sie in Listen aus Zeichen umzuwandeln. Elm stellt hierzu die passenden vordefinierten Funktionen zur Verfügung.
> String.toList "HALLO"
['H','A','L','L','O'] : List Char
> String.fromList ['H','A','L','L','O']
"HALLO" : String
Die Verschlüsselung eines Textes - als Liste von Zeichen - lässt sich jetzt leicht mit dem map
-Operator durchführen.
Aufgabe 2
(a) Ergänze den Aufruf des map
-Operators im unten gezeigten REPL-Dialog. Verwende die bereits definierte Funktion zuordnung
.
module Verschluesselung exposing (..)
zuordnung: Char -> Char
zuordnung zeichen =
...
> import Verschluesselung exposing (..)
> textAlsListe = ['H','A','L','L','O']
['H','A','L','L','O'] : List Char
> List.map ...
['U','G','D','D','T'] : List Char
(b) Entwickle eine Funktion verschluesselungZuordnung
, die den Aufruf des map
-Operators mit den oben gezeigten Umwandlungsfunktionen kombiniert.
module Verschluesselung exposing (..)
zuordnung: Char -> Char
zuordnung zeichen =
...
verschluesselungZuordnung: String -> String
verschluesselungZuordnung text =
...
> import Verschluesselung exposing (..)
> verschluesselungZuordnung "HALLO"
"UGDDT" : String