Шифрование по цезарю
This commit is contained in:
@@ -2,8 +2,13 @@ module Main (main) where
|
||||
|
||||
import Lib
|
||||
|
||||
caesarShift :: Int
|
||||
caesarShift = 66
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
inputText <- readFile "resources/biography.txt"
|
||||
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
|
||||
(
|
||||
createAlphabetFromText
|
||||
createAlphabetFromText,
|
||||
encryptCaesar
|
||||
) where
|
||||
|
||||
createAlphabetFromText :: String -> [Char]
|
||||
@@ -9,4 +10,15 @@ createAlphabetFromText (x:xs)
|
||||
| x `elem` alphabet = alphabet
|
||||
| otherwise = x : alphabet
|
||||
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