Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
16
Task/Caesar-cipher/Haskell/caesar-cipher-1.hs
Normal file
16
Task/Caesar-cipher/Haskell/caesar-cipher-1.hs
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
module Caesar (caesar, uncaesar) where
|
||||
|
||||
import Data.Char
|
||||
|
||||
caesar, uncaesar :: (Integral a) => a -> String -> String
|
||||
caesar k = map f
|
||||
where f c = case generalCategory c of
|
||||
LowercaseLetter -> addChar 'a' k c
|
||||
UppercaseLetter -> addChar 'A' k c
|
||||
_ -> c
|
||||
uncaesar k = caesar (-k)
|
||||
|
||||
addChar :: (Integral a) => Char -> a -> Char -> Char
|
||||
addChar b o c = chr $ fromIntegral (b' + (c' - b' + o) `mod` 26)
|
||||
where b' = fromIntegral $ ord b
|
||||
c' = fromIntegral $ ord c
|
||||
Loading…
Add table
Add a link
Reference in a new issue