我从这段代码得到了不可预测的响应,如果使用的短语只有一个单词输出是预测的,那么如果移位为0则它会直接推动。但是当短语中有空格时,转变似乎无法预测。如果有人可以看到这个模式,或者告诉我幕后方法正在做什么。(使用new1数组作为接收者,并且使用了一个未改变的数组)
def caesar (phrase, shift)
alpha=('a'..'z').to_a
#new1=[]
temp=phrase.downcase.split('')
temp.each{|x| (temp[temp.index(x)]=alpha[(alpha.index(x)+shift)%26]) if alpha.include?(x)}
p temp.join
end
caesar("abcde fghijklmnopqrs tu,,..vwxyz", 1)
caesar("Frank", 1)
caesar("Frank is a willy munching wombat.", 1)
结果:
" abcde fghijklmnopqrs tu ,, .. vwxyz"
" gsbol"
" hucpo js b xjnlz mvodjing xombbt。"
如果在其他地方得到回答,请道歉,说实话我甚至都不知道该问什么。
答案 0 :(得分:0)
一旦信件重演,这就错了:
temp[temp.index(x)]=...
改为使用each_with_index!