实现一个旋转密码,它有时也被称作凯撒密码。
凯撒密码是一种简单的移位密码,它通过一个介于0和26之间的整数密钥,对字母表中的所有字母进行移位。由于模运算的关系,使用0或26作为密钥总是得到相同的输出。字母会按照密钥的值移动相应的位数。
旋转密码的通用记法是ROT + <key>。最常用的旋转密码是ROT13。
对拉丁字母表应用ROT13的效果如下:
Plain: abcdefghijklmnopqrstuvwxyz
Cipher: nopqrstuvwxyzabcdefghijklm
它比埃特巴什密码更强,因为它有 27 个可能的密钥,其中 25 个可用。
密文的书写格式与输入相同,包括空格和标点。
omg变成trl
c变成c
Cool变成Cool
The quick brown fox jumps over the lazy dog.变成Gur dhvpx oebja sbk whzcf bire gur ynml qbt.
Gur dhvpx oebja sbk whzcf bire gur ynml qbt.变成The quick brown fox jumps over the lazy dog.
这是一个很好的练习,可以用来尝试非标准字符串字面量和元编程。
这篇博客文章简要介绍了非标准字符串字面量。详细的元编程指南可以在手册中找到。
你可以通过添加下面描述的功能来扩展你提交的解答。
加分题 A 只需要博客文章中介绍的基础知识。加分题 B 则需要对 Julia 元编程有深入得多的了解。
实现一个字符串字面量,让它对字符串起到 ROT13 的作用:
R13"abcdefghijklmnopqrstuvwxyz" == "nopqrstuvwxyzabcdefghijklm"
实现字符串字面量 R<i>(i = 0, ..., 26),它们会按照 i 的值对字符串进行移位:
R0"Hello, World!" == "Hello, World!"
R4"Testing 1 2 3 testing" == "Xiwxmrk 1 2 3 xiwxmrk"
R13"abcdefghijklmnopqrstuvwxyz" == "nopqrstuvwxyzabcdefghijklm"