Verschlüsselung
Zeichen verschlüsseln
    Nun wollen wir die map-Funktion verwenden, um eine 
    Zeichenkette bzw. eine Liste von Zeichen zu verschlüsseln.
    Hier noch einmal die Verschlüsselungstabelle:
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
Wir benötigen also eine Funktion, die ein einzelnes Zeichen anhand der Tabelle verschlüsselt. Die einfachste Möglichkeit zur Implementierung dieser Funktion besteht darin, alle Fälle aufzulisten:
verschluesseltesZeichen : Char -> Char
verschluesseltesZeichen 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'
        _ -> '?'
Aufgabe 1
- 
            Teste die Funktion 
verschluesseltesZeichen. - 
            Nutze die Funktion, um eine ganze Zeichenkette zu verschlüsseln.
            Tipp: Verwende auch die Funktionen 
String.toListundString.fromList. 
Aufgabe 2
        Entwickle analog eine Funktion entschluesseltesZeichen, 
        die die Verschlüsselung wieder rückgängig macht.
        Entschlüssle damit die Nachricht auf der Einladungskarte:
        CASYGNVFLAMCSVGBSNJVSMGPZPJVGKQITSDLPUNAMBSAMSBZGNVSMJVGVV
    
Für Fortgeschrittene - Ein Schlüsselwort verwenden
Eleganter und flexibler - aber auch komplizierter - ist die folgende 
Implementierung der Funktion verschluesseltesZeichen.
verschluesseltesZeichen : String -> Char -> Char
verschluesseltesZeichen schluesselwort zeichen =
    let
        posABC =
            Char.toCode zeichen - Char.toCode 'A'
        neuesZeichenAlsString =
            String.slice posABC (posABC + 1) schluesselwort
        vielleichtNeuesZeichen =
            String.uncons neuesZeichenAlsString
        neuesZeichen =
            case vielleichtNeuesZeichen of
                Just ( z, _ ) ->
                    z
                Nothing ->
                    '?'
    in
    neuesZeichen
Aufgabe 3
        Teste die Funktion verschluesseltesZeichen für einelnze Zeichen
        und für eine ganze Zeichenkette.
        Nutze als Schlüsselwort z.B. "GKXCSLZUAHWDBMTYENJVPOIRFQ".
        Beschreibe möglichst genau, wie die Funktion verschluesseltesZeichen 
        arbeitet.
    
Aufgabe 4
Entwickle analog eine Implementierung der Funktion entschluesseltesZeichen.