1234567891011121314151617181920212223242526272829303132 |
- import Data.Char
- type Message = [Int]
- stringToMessage::String -> Message
- stringToMessage = map ord
- messageToString::Message -> String
- messageToString = map chr
- pad::Int -> Message -> Message
- pad bsize msg =
- let msgSize = length msg in
- let gap = mod msgSize bsize in
- let padding = bsize - gap in
- msg ++ [padding | _ <- [1..padding] ]
- unpad::Message -> Message
- unpad m = reverse $ subunpad (-1) [] m
- subunpad::Int -> Message -> Message -> Message
- subunpad _ [] [] = []
- subunpad (-1) ys (s:[]) = subunpad (s - 1) ys []
- subunpad (-1) ys (x:xs) = subunpad (-1) (x:ys) xs
- subunpad 0 ys _ = ys
- subunpad s (y:ys) _ = subunpad (s - 1) ys []
|