Bueno, el gay de strup se hizo su morse en haskell que ya luego publicará y yo pues me uní a la causa:

Código: Seleccionar todo

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]]
Te quedo de puta madre loco mañana haber si hago el descifrado que termine con dolor de cabeza optimizandola, aunque algunos no lo crean esta funcion es de solo 5 lineas lo que pasa que se acumula el array del alfabeto morse xD, un saludo maquina
Abolición para el torneo del toro de la vega. Death to the murderers of bulls.
Bueno ahora que tenia la cabeza fresca me puse a hacer el descifrado que es la unica parte que me quedaba y aqui dejo mi alternativa tambien de 5 lineas (cifrado y descifrado)

Código: Seleccionar todo

alfaMorse = [".- ", "-... ", "-.-. ", "-.. ", ". ","..-. ", "--. ", ".... ", ".. ", ".--- ", "-.- ", ".-.. ", "-- ", "-. ", "--- ", ".--. ", "--.- ", ".-. ", "... ", "- ", "..- ", "...- ",".-- ", "-..- ", "-.-- ", "--.. ", "----- ",".---- ", "..--- ", "...-- ", "....- ", "..... ", "-.... ", "--... ","---.. ", "----. ", ".-.-.- ", "--..-- ", "..--.. ", "-....- ", "-.-.-- ", "---... ", "-.-.-. ", "-.--. ", "-.--.- ", "-...- ", "...-..- ", ".--.-. ","..--.- ", ".-.-. ", ".-... ", "...-.- ", "/ ", ".----. "]
morse [] = []
morse (x:xs) = [alfaMorse !! i |(s,i) <- zip (['a'..'z']++['0'..'9']++".,?-!:;()=$@_+~# '") [0..53],x == s]++morse xs
desMorse [] = []
desMorse (x:xs) = [(['A'..'Z']++['0'..'9']++".,?-!:;()=$@_+~# '") !! i | (s,i) <- zip alfaMorse [0..53],x == s]++desMorse xs
Agradezco a sanko el haber estado atento a todas mis dudas y prestarme su ayuda, por ejemplo nunca se me ocurrio usar zip en las listas intencionales, un saludo maquina

Muestra:

Código: Seleccionar todo

GHCi, version 7.6.3: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
[1 of 1] Compiling Main             ( C:\Documents and Settings\Strup\Escritorio
\morse.hs, interpreted )
Ok, modules loaded: Main.
*Main> morse "puta zorra"
[".--. ","..- ","- ",".- ","/ ","--.. ","--- ",".-. ",".-. ",".- "]
*Main> putStrLn (desMorse [".--. ","..- ","- ",".- ","/ ","--.. ","--- ",".-. ",".-. ",".- "])
PUTA ZORRA
*Main>
Abolición para el torneo del toro de la vega. Death to the murderers of bulls.
strup escribió:Bueno ahora que tenia la cabeza fresca me puse a hacer el descifrado que es la unica parte que me quedaba y aqui dejo mi alternativa tambien de 5 lineas (cifrado y descifrado)

Código: Seleccionar todo

alfaMorse = [".- ", "-... ", "-.-. ", "-.. ", ". ","..-. ", "--. ", ".... ", ".. ", ".--- ", "-.- ", ".-.. ", "-- ", "-. ", "--- ", ".--. ", "--.- ", ".-. ", "... ", "- ", "..- ", "...- ",".-- ", "-..- ", "-.-- ", "--.. ", "----- ",".---- ", "..--- ", "...-- ", "....- ", "..... ", "-.... ", "--... ","---.. ", "----. ", ".-.-.- ", "--..-- ", "..--.. ", "-....- ", "-.-.-- ", "---... ", "-.-.-. ", "-.--. ", "-.--.- ", "-...- ", "...-..- ", ".--.-. ","..--.- ", ".-.-. ", ".-... ", "...-.- ", "/ ", ".----. "]
morse [] = []
morse (x:xs) = [alfaMorse !! i |(s,i) <- zip (['a'..'z']++['0'..'9']++".,?-!:;()=$@_+~# '") [0..53],x == s]++morse xs
desMorse [] = []
desMorse (x:xs) = [(['A'..'Z']++['0'..'9']++".,?-!:;()=$@_+~# '") !! i | (s,i) <- zip alfaMorse [0..53],x == s]++desMorse xs
Agradezco a sanko el haber estado atento a todas mis dudas y prestarme su ayuda, por ejemplo nunca se me ocurrio usar zip en las listas intencionales, un saludo maquina

Muestra:

Código: Seleccionar todo

GHCi, version 7.6.3: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
[1 of 1] Compiling Main             ( C:\Documents and Settings\Strup\Escritorio
\morse.hs, interpreted )
Ok, modules loaded: Main.
*Main> morse "puta zorra"
[".--. ","..- ","- ",".- ","/ ","--.. ","--- ",".-. ",".-. ",".- "]
*Main> putStrLn (desMorse [".--. ","..- ","- ",".- ","/ ","--.. ","--- ",".-. ",".-. ",".- "])
PUTA ZORRA
*Main>
Vale maquina , ayuda? na! orientación, no soy tan bueno como para ayudar xd
Una orientacion para mi es una ayuda, saludos
Abolición para el torneo del toro de la vega. Death to the murderers of bulls.
Responder

Volver a “Fuentes”