ruby - Easy ROT13 Ruby "programme"之谜

标签 ruby rot13

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

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

end

输出:

NOPQRSTUVWXYZABCDEFGHIJKLM

如果我不在 a.length 之后添加 +1,则迭代以字母 L 结束。但是,如果我在迭代中使用 print a[i],它通常以 A 开始并以 Z 结束,没有 + 1 需要添加。

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

最佳答案

我只需要一个快速的 rot13 one liner,这个 SO 条目是第一个谷歌结果。我继续搜索并找到了一个由@xfaider 设计的超小型产品,它对我的​​目的来说效果很好。

只需将它张贴在这里,供下一个想要单眼皮的人使用。

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

关于ruby - Easy ROT13 Ruby "programme"之谜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40662287/

相关文章:

ruby - 如何从文本中提取 URL

ruby - 为什么 datamapper 不更新记录/检测脏度?

go - 为什么使用 naked return 和 normal return 会给我不同的结果?

java - 无法弄清楚我的 rot-13 方法有什么问题

php - 正则表达式匹配和编码字符串中的重复字符

Javascript ROT13 函数只能部分工作

ruby-on-rails - 显示评分最高的对象。 Letsrate,Rails

php - Ruby 中的 HTTP 代码范围检查

ruby-on-rails - Rails 中至少有 2 个 DateTime?

language-agnostic - 具有奇数个符号的字母表的渐合密码(如 ROT13)