Шифрование по цезарю
This commit is contained in:
@@ -2,8 +2,13 @@ module Main (main) where
|
|||||||
|
|
||||||
import Lib
|
import Lib
|
||||||
|
|
||||||
|
caesarShift :: Int
|
||||||
|
caesarShift = 66
|
||||||
|
|
||||||
main :: IO ()
|
main :: IO ()
|
||||||
main = do
|
main = do
|
||||||
inputText <- readFile "resources/biography.txt"
|
inputText <- readFile "resources/biography.txt"
|
||||||
putStrLn $ take 30 inputText
|
putStrLn $ take 30 inputText
|
||||||
putStrLn $ createAlphabetFromText inputText
|
let alphabet = createAlphabetFromText inputText
|
||||||
|
putStrLn $ show (length alphabet)
|
||||||
|
putStrLn $ take 30 (encryptCaesar alphabet caesarShift inputText)
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
module Lib
|
module Lib
|
||||||
(
|
(
|
||||||
createAlphabetFromText
|
createAlphabetFromText,
|
||||||
|
encryptCaesar
|
||||||
) where
|
) where
|
||||||
|
|
||||||
createAlphabetFromText :: String -> [Char]
|
createAlphabetFromText :: String -> [Char]
|
||||||
@@ -10,3 +11,14 @@ createAlphabetFromText (x:xs)
|
|||||||
| otherwise = x : alphabet
|
| otherwise = x : alphabet
|
||||||
where
|
where
|
||||||
alphabet = createAlphabetFromText xs
|
alphabet = createAlphabetFromText xs
|
||||||
|
|
||||||
|
indexOf :: (Eq t) => [t] -> t -> Int
|
||||||
|
indexOf [] _ = -1
|
||||||
|
indexOf (x : xs) target
|
||||||
|
| x == target = 0
|
||||||
|
| otherwise = 1 + indexOf xs target
|
||||||
|
|
||||||
|
encryptCaesar :: [Char] -> Int -> String -> String
|
||||||
|
encryptCaesar alphabet shift text = map caesarChar text
|
||||||
|
where
|
||||||
|
caesarChar c = alphabet !! ((indexOf alphabet c + shift) `mod` length alphabet)
|
||||||
Reference in New Issue
Block a user