0votos

Cifrado César en F#

por jmgomez hace 3 años

Solución simple. Para testear la correcta ejecución del programa bastaría con pasar el resultado de cipher como parámetro a cipher (con n negativo) para todos los posibles valores de char.

Implementar funciones para el cifrado César (cifrado por desplazamiento, código de César o desplazamiento de César)

1
2
3
4
5
6
7
8
9
10
let alphabet = ['a'..'z']  
let indexOfKey (c:char,n) = ((alphabet |> List.findIndex(fun a->a=c)) + n + alphabet.Length) % alphabet.Length 
let cipherChar (c,n) = if alphabet |> List.exists(fun a->a=c) then alphabet.Item(indexOfKey(c,n)) else c 
let cipher (text:string, n) = text.ToLower() |> Seq.map (fun c->cipherChar(c,n)) |> String.Concat 
 
//Ejemplo de ejecución 
[<EntryPoint>] 
let main args =  
    Console.WriteLine(cipher(cipher("Hello world!",2),-2)) 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.