в алфавите, нужно вернуть ту же букву. Тогда символ, которым будет шифроваться следующий символ, останется тем же.
Пример:
пароль: пар
текст: хей гайс
тогда алгоритм зашифрует хей с помощью пар, пробел вернет как пробел, но г в гайс будет шифроваться не буквой а, а буквой п
Вот код который это делает. Не уверен правда, хороший ли это код? Мутабельная переменная, хотя я пытался ее избежать разными костылями но не получилось, и большая лямбда на несколько строк. Может есть какие-то другие варианты написания такой же логики?
https://gist.github.com/markvrc/ce086dbbafd3529540fdb9f685f4116c
let encryptCaesar (text:string) (key:string) = seq { let mutable keyIndex = 0 for ch in text do match encryptCharacter key.[keyIndex % key.Length] ch with | Some result -> keyIndex <- keyIndex + 1 result | None -> ch } |> Array.ofSeq |> String в сам код не особо вникал
Обсуждают сегодня