我正致力于创建Caeser Cypher代码,而我无法弄清楚如何让搜索循环返回"返回"回到" a"在我的字母数组中。
这是我得到的:
def ceaser_cypher(string, num)
alphabet = ("a".."z").to_a
letters = string.split("")
letters.map!.with_index do |let,idxs|
if alphabet.include?(let)
alphabet[alphabet.index(let) + num]
end
end
letters.join("")
end
就像大多数字母的魅力一样,但对于,例如," y"和" z",如果,例如,nil
,他们当然会返回num == 3
1}}因为字母数组中没有三个以上的索引;而不是返回" b"或" c"分别。那么我如何才能让循环开始?
答案 0 :(得分:6)
你想要这样做:
alphabet[(alphabet.index(let) + num) % alphabet.length]
模数运算符将使其在超过数组长度时有效地“换行”。