Easy ROT13 Ruby“程序”之谜

Pav*_*vol 3 ruby rot13

我做了一个简单的 ROT13 程序,但我不明白一件事:

a = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
(a.length+1).times do |i|
  print  a[i + 13]
  if i>13
    print a[i %14]
  end

end
Run Code Online (Sandbox Code Playgroud)

输出:

NOPQRSTUVWXYZABCDEFGHIJKLM
Run Code Online (Sandbox Code Playgroud)

如果我不添加+1after a.length,迭代将以字母 结束L。但是,如果我print a[i]在迭代内部使用,它通常以 开始A并结束,Z无需+1添加。

有人能为我解释这个谜团吗?

gen*_*abs 5

我只需要一个快速的 rot13 one liner,这个 SO 条目是第一个谷歌结果。我继续搜索,发现 @xfaider 的一个超级小,足以满足我的目的。

只是将其发布在这里,供下一个想要俏皮话的人使用。

string.tr("A-Za-z", "N-ZA-Mn-za-m")