Underc0de

Programación General => Otros lenguajes => Mensaje iniciado por: Sanko en Febrero 27, 2014, 06:31:27 PM

Título: Morse - Haskell
Publicado por: Sanko en Febrero 27, 2014, 06:31:27 PM
Código (haskell) [Seleccionar]
module Morse where
xAbc = zip (['a'..'z']++['0'..'9']++".,?-!:;()=$@_+~# '")([".- ", "-... ", "-.-. ", "-.. ", ". ","..-. ", "--. ", ".... ", ".. ", ".--- ", "-.- ", ".-.. ", "-- ", "-. ", "--- ", ".--. ", "--.- ", ".-. ", "... ", "- ", "..- ", "...- ",".-- ", "-..- ", "-.-- ", "--.. ", "----- ",".---- ", "..--- ", "...-- ", "....- ", "..... ", "-.... ", "--... ","---.. ", "----. ", ".-.-.- ", "--..-- ", "..--.. ", "-....- ", "-.-.-- ", "---... ", "-.-.-. ", "-.--. ", "-.--.- ", "-...- ", "...-..- ", ".--.-. ","..--.- ", ".-.-. ", ".-... ", "...-.- ", "/ ", ".----. "])
findPos list elt = [index | (index, e) <- zip [0..] list, e == elt]

xEnc xs = [snd (xAbc !! (x !! 0))| x <- [findPos ([fst (xAbc !! z) | z <- [0..length xAbc]]) x | x <- xs]]
xDec xs = [fst (xAbc !! (x !! 0))| x <- [findPos ([snd (xAbc !! z) | z <- [0..length xAbc]]) x | x <- xs]]


Output:
*Morse> xEnc "hola"
[".... ","--- ",".-.. ",".- "]
*Morse> xDec [".... ","--- ",".-.. ",".- "]
"hola"