В криптографии есть шифр Цезаря. Я пытаюсь построить его в Ruby, но я не знаю, как использовать заглавные буквы в моем диапазоне ('a'..'z').to_a.join
. Как использовать заглавные буквы?В криптографии шифр Цезаря Ruby
class Caesar
def initialize(shift)
alphabet = ('a'..'z').to_a.join
i = shift % alphabet.size
@decrypt = alphabet
@encrypt = alphabet[i..-1] + alphabet[0...i]
end
def encrypt(string)
string.tr(@decrypt, @encrypt)
end
def decrypt(string)
string.tr(@encrypt, @decrypt)
end
end
cipher_1 = Caesar.new(1)
s = 'A man, a plan, a canal: Panama!'
puts s
s_encoded = cipher_1.encrypt(s)
puts s_encoded
pudaats = cipher_1.decrypt(s_encoded)
puts pudaats
Выходной
Человек, план, канал: Панама!
A nbo, b qmbo, b dbobm: Pbobnb!
Человек, план, канал: Панама!
Но мне нужно из положить
Человек, план, канал: Панама!
B nbo, b qmbo, b dbobm: Qbobnb!
Человек, план, канал: Панама!
Похоже, домашнее задание для меня. –
Что вы думаете? – sawa
@sawa: Вопрос в том, что он не переносит заглавные буквы. –