我在使用这个ceaser密码项目时遇到了麻烦。我环顾四周,比较并运用了我的发现,但还没有成功。
它获得了数据,但它只是打印出我的字符串而没有移动它。
此处是我的代码。
def ceaser(k, v = 1)
char = k.split("")
alphabet = Array("a".."z")
cipher = Hash[alphabet.zip(alphabet.rotate(v))]
char.join
end
p ceaser "this string",2
如何修复它并使其转变?
答案 0 :(得分:2)
您没有将密码应用于字符串/数组。 我遍历字符串并获取密码的映射,推送这些映射,然后重新加入字符串。
def ceaser(k, v = 1)
char = k.split("")
alphabet = Array("a".."z")
cipher = Hash[alphabet.zip(alphabet.rotate(v))]
ciphertext = []
char.each do |element|
ciphertext.push(cipher[element])
#note you do not have anything in the cipher for spaces and it returns nil
end
ciphertext.join
end
答案 1 :(得分:0)
您需要根据密码规则映射您的角色:
char.map { |letter| cipher[letter] || letter }.join
如果没有密码匹配,我们只返回原始字符。