aqui va mi alternativa
Código: Seleccionar todo
import Data.Char (isSpace,toUpper)
import Data.List (elemIndices)
cesar [] ys = []
cesar (x:xs) ys |isSpace x = x:cesar xs ys |otherwise = [['a'..'z'] !!(((elemIndices (toUpper x) ['A'..'Z']!! 0)+ys) `mod` 26)]++cesar xs ys
dCesar [] ys = []
dCesar (x:xs) ys |isSpace x = x:dCesar xs ys |otherwise = [['a'..'z'] !!(((elemIndices (toUpper x) ['A'..'Z']!! 0)-ys) `mod` 26)]++dCesar xs ys
pastebin:
[Enlace externo eliminado para invitados]
Muestra:
Código: Seleccionar todo
Strup@belistrup ~
$ ghci cesar
WARNING: GHCi invoked via 'ghci.exe' in *nix-like shells (cygwin-bash, in particular)
doesn't handle Ctrl-C well; use the 'ghcii.sh' shell wrapper instead
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 ( cesar.hs, interpreted )
Ok, modules loaded: Main.
*Main> putStrLn.cesar "beli strup" $ 29
ehol vwuxs
*Main>
*Main> putStrLn.dCesar "ehol vwuxs" $ 29
beli strup
espero os guste el code un saludo
PD: Buena tu mejora sanko
Abolición para el torneo del toro de la vega. Death to the murderers of bulls.