i

Teilproblem

Zeichen verschlüsseln

Wir betrachten zuerst das Teilproblen, einen einzelnen Buchstaben mit der Tabelle zu verschlüsseln.

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

Ziel ist es, eine Funktion verschluesseltesZeichen für dieses Teilproblem zu entwickeln.

Signatur:
verschluesseltesZeichen: String -> String
Beispiele:
verschluesseltesZeichen "P" -> "Y"
verschluesseltesZeichen "P" -> "Y"
verschluesseltesZeichen "." -> "?"
verschluesseltesZeichen " " -> "?"

Eine Fallunterscheidung verwenden

Die einfachste Möglichkeit zur Implementierung dieser Funktion besteht darin, alle Fälle aufzulisten:

module MonoalphabetischeVerschluesselung exposing (..)

{-- Version 1 --}

verschluesseltesZeichen: String -> String
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.

Aufgabe 2

Entwickle analog eine Funktion entschluesseltesZeichen, die die Verschlüsselung wieder rückgängig macht.

Ein Schlüsselwort verwenden

Eleganter und flexibler - aber auch komplizierter - ist die folgende Implementierung der Funktion verschluesseltesZeichen.

module MonoalphabetischeVerschluesselung exposing (..)

{-- Version 2 --}

-- Verschlüsselungstabelle
	
schluesselwort: String
schluesselwort = "GKXCSLZUAHWDBMTYENJVPOIRFQ"

abc: String
abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

-- Hilfsfunktionen

erstesZeichen: String -> String
erstesZeichen text = 
    String.left 1 text

ohneErstesZeichen: String -> String
ohneErstesZeichen text =
    String.dropLeft 1 text

zeichenAnPos: Int -> String -> String
zeichenAnPos n text =
    String.slice (n-1) n text

position: String -> String -> Int
position zeichen text =
    if text == "" then
        1
    else
        if zeichen == (erstesZeichen text) then
            1
        else
            1 + (position zeichen (ohneErstesZeichen text))

positionABC: String -> Int
positionABC zeichen =
    let
        n = position zeichen abc
    in
    if n <= 26 then n else 0

-- Funktion für die Verschlüsselung eines Zeichens
    
verschluesseltesZeichen: String -> String
verschluesseltesZeichen zeichen =
    zeichenAnPos (positionABC zeichen) schluesselwort 

Aufgabe 3

Analysiere und teste die Funktionsdefinitionen. Beschreibe möglichst genau, was die einzelnen Funktionen leisten und wie das in den Funktionsdefinitionen implementiert wird.

Aufgabe 4

Entwickle analog eine Implementierung der Funktion entschluesseltesZeichen.

Suche

v
100.110.2.7.3.1.2
inf-schule.de/entwuerfe/fp_elm_alteversion/elm_programme/rekursion/verschluesselung/lernstrecke/teilproblem
inf-schule.de/100.110.2.7.3.1.2
inf-schule.de/@/page/h7cs0pjk77PNAcym

Rückmeldung geben