Шифр Цезаря ура
This commit is contained in:
parent
7e8959363c
commit
64f92b2533
18
src/Main.hs
18
src/Main.hs
@ -13,10 +13,23 @@ import Data.Maybe
|
||||
-}
|
||||
|
||||
-- Шифр Цезаря. Сдвиг на N символов в X сторону.
|
||||
-- Input, Direction(Y=right, N=left), Number
|
||||
-- Algo: если сдвигаем вправо, то к алфавиту
|
||||
-- [*начало+сдвиг*..'z'] прибавляем алфавит ['a'..*конец-сдвиг*]
|
||||
-- если сдвиг влево, то [] : []
|
||||
caesarEnc :: String -> Bool -> Int -> String
|
||||
caesarEnc input direction numb = do
|
||||
let alp = ['a'..'z']
|
||||
if direction
|
||||
then encEr input alp (concat [(drop numb alp), (take numb alp)])
|
||||
else "NaN"
|
||||
|
||||
-- Подменялка алфавита. Input, AlphabetOrig, AlphabetNew
|
||||
encEr :: String -> String -> String -> String
|
||||
encEr input alp encAlp = map (\x -> encAlp !! (fromJust (elemIndex x alp))) input
|
||||
|
||||
-- Шифр Атбаша. Инверсия алфавита.
|
||||
-- a = e, r=d и т.д.
|
||||
|
||||
atbashEnc :: String -> String
|
||||
atbashEnc input = do
|
||||
let alp = ['a'..'z']
|
||||
@ -47,4 +60,5 @@ main = do
|
||||
putStrLn "Шифр Атбаша, переворот алфавита:"
|
||||
print . atbashEnc $ "test"
|
||||
print . atbashDec $ ( atbashEnc "test" )
|
||||
|
||||
putStrLn "Шифт Цезаря (вправо на 3):"
|
||||
print (caesarEnc "test" True 3)
|
||||
|
Loading…
Reference in New Issue
Block a user