Shared Chat•
GPT-4Caesar Cipher Haskell
August 23, 2023
Schrijf een programma in Haskell voor ceasar-codering
Zeker! Hier is een eenvoudig voorbeeld van een Caesar-coderingsprogramma in Haskell. De Caesar-codering is een eenvoudige substitutiecipher waarbij elke letter in de tekst wordt verschoven langs het alfabet met een vaste hoeveelheid plaatsen.
haskellimport Data.Char (ord, chr, isLower, isUpper) -- Functie om een enkel karakter te verschuiven shiftChar :: Int -> Char -> Char shiftChar n c | isLower c = chr $ (ord c - ord 'a' + n) `mod` 26 + ord 'a' | isUpper c = chr $ (ord c - ord 'A' + n) `mod` 26 + ord 'A' | otherwise = c -- Caesar-encodeerfunctie ceasarEncode :: Int -> String -> String ceasarEncode n s = map (shiftChar n) s -- Caesar-decodeerfunctie ceasarDecode :: Int -> String -> String ceasarDecode n s = ceasarEncode (-n) s main :: IO () main = do putStrLn "Geef de tekst om te coderen:" text <- getLine putStrLn "Geef de verschuiving (een geheel getal):" shift <- readLn let encoded = ceasarEncode shift text putStrLn $ "Gecodeerd: " ++ encoded let decoded = ceasarDecode shift encoded putStrLn $ "Gedecodeerd: " ++ decoded
Dit programma vraagt om een tekst en een verschuivingswaarde en voert vervolgens de Caesar-codering uit op de gegeven tekst. Het toont zowel de gecodeerde als de gedecodeerde versie van de tekst.
De shiftChar
functie verzorgt de eigenlijke verschuiving van de individuele karakters, waarbij het rekening houdt met hoofdletters en kleine letters en niet-letterkarakters ongemoeid laat.
De Caesar-codering is zeer onveilig in moderne termen en wordt niet gebruikt voor serieuze cryptografie.