в алфавите, нужно вернуть ту же букву. Тогда символ, которым будет шифроваться следующий символ, останется тем же. 
                  
                  
                  Пример:
                  
                  
                  пароль: пар
                  
                  
                  текст: хей гайс
                  
                  
                  тогда алгоритм зашифрует хей с помощью пар, пробел вернет как пробел, но г в гайс будет шифроваться не буквой а, а буквой п
                  
                  
                  
                  
                  
                  Вот код который это делает. Не уверен правда, хороший ли это код? Мутабельная переменная, хотя я пытался ее избежать разными костылями но не получилось, и большая лямбда на несколько строк. Может есть какие-то другие варианты написания такой же логики? 
                  
                  
                  
                  
                  
                  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 в сам код не особо вникал
Обсуждают сегодня