К основному контенту

Сообщения

Сообщения за мая 12, 2018

расшифровка шифра Цезаря

(*расшифровка шифра Цезаря*) let secret = "li bra ghflskhu wklv dqg bra nqrz lw, fods brxu kdqgv" let keys = [ for i in 'a' .. 'z' -> i ] let size = keys |> List . length let slice a = let ( h :: t ) = a t @ [ h ] let decode ( word : string ) ( code : char list ) = for x = 0 to word . Length - 1 do let f = List . tryFindIndex ( fun e -> word .[ x ] = e ) keys match f with | Some c -> printf "%c" ( code .[ c ]) | None -> printf "%c" ( word .[ x ]) let rec loop ( word : string ) ( code : char list ) count = match count with | _ when count > keys . Length -> () | _ -> printfn "\ntry number %d" count let cipher = slice code decode word cipher loop word cipher ( count + 1 ) printfn "decoding Cezar's cipher %s ...\n...