123456789101112131415161718192021222324 |
- -- Slide 58
- import Data.Char
- cechar n c = chr ((mod ((ord c) + n - ord 'a') ((ord 'z') - ord 'a' + 1)) + ord 'a')
- cesar n = map (cechar n)
- inlinecesar n s = map (chr.(+ ord 'a').(flip mod 26).(+ n).(subtract (ord 'a')).ord) s
- getCorrectValue::IO Int
- getCorrectValue = do
- putStrLn "Please give a number in [1, 26["
- x <- getLine
- let i = (read x)::Int
- if i > 0 && i < 26 then return i else getCorrectValue
- main::IO ()
- main = do
- n <- getCorrectValue
- putStrLn "Please give a word"
- s <- getLine
- putStrLn (cesar n s)
- putStrLn (inlinecesar n s)
|