Chaocipher: Difference between revisions

m
No edit summary
Line 1,369:
<lang haskell>import Data.List (elemIndex)
 
chao :: Eq a => [a] -> [a] -> Bool -> [a] -> [a]
chao
:: Eq 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"
chao "HXUCZVAMDSLKPEFJRIGTWOBNYQ" "PTLNBQDEOYSFAVZKGJRIHWXUMC"
plainText = "WELLDONEISBETTERTHANWELLSAID"
cipherText = chaoWheels encode plainText
mapM_
print plainText
print
print cipherText
print [ plainText,
print $ chaoWheels decode cipherText</lang>
print cipherText,
print $ chaoWheels decode cipherText</lang>
]</lang>
{{Out}}
<pre>
9,655

edits