我做了一个简单的 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添加。
有人能为我解释这个谜团吗?
我只需要一个快速的 rot13 one liner,这个 SO 条目是第一个谷歌结果。我继续搜索,发现 @xfaider 的一个超级小,足以满足我的目的。
只是将其发布在这里,供下一个想要俏皮话的人使用。
string.tr("A-Za-z", "N-ZA-Mn-za-m")
| 归档时间: |
|
| 查看次数: |
2628 次 |
| 最近记录: |