Chaocipher: Difference between revisions
m
→{{header|Haskell}}: Tidied.
No edit summary |
m (→{{header|Haskell}}: Tidied.) |
||
Line 1,369:
<lang haskell>import Data.List (elemIndex)
chao :: Eq a => [a] -> [a] -> Bool -> [a] -> [a]▼
▲ => [a] -> [a] -> Bool -> [a] -> [a]
chao _ _ _ [] = []
chao l r plain (x : xs) = maybe [] go (elemIndex x src)
where
(src, dst)
Line 1,395 ⟶ 1,393:
(x, y) = splitAt src a
encode, decode :: Bool
encode = False
decode = True
Line 1,402 ⟶ 1,400:
main = do
let chaoWheels =
chao
chao "HXUCZVAMDSLKPEFJRIGTWOBNYQ" "PTLNBQDEOYSFAVZKGJRIHWXUMC"▼
"HXUCZVAMDSLKPEFJRIGTWOBNYQ"
plainText = "WELLDONEISBETTERTHANWELLSAID"
cipherText = chaoWheels encode plainText
mapM_
print plainText▼
print
print cipherText▼
print $ chaoWheels decode cipherText</lang>▼
]</lang>
{{Out}}
<pre>
|