轨道
/
Julia
Julia
/
练习
/
旋转密码
旋转密码

旋转密码

简单

说明

实现一个旋转密码,它有时也被称作凯撒密码。

凯撒密码是一种简单的移位密码,它通过一个介于0和26之间的整数密钥,对字母表中的所有字母进行移位。由于模运算的关系,使用0或26作为密钥总是得到相同的输出。字母会按照密钥的值移动相应的位数。

旋转密码的通用记法是ROT + <key>。最常用的旋转密码是ROT13。

对拉丁字母表应用ROT13的效果如下:

Plain:  abcdefghijklmnopqrstuvwxyz
Cipher: nopqrstuvwxyzabcdefghijklm

它比埃特巴什密码更强,因为它有 27 个可能的密钥,其中 25 个可用。

密文的书写格式与输入相同,包括空格和标点。

示例

  • ROT5 把omg变成trl
  • ROT0 把c变成c
  • ROT26 把Cool变成Cool
  • ROT13 把The quick brown fox jumps over the lazy dog.变成Gur dhvpx oebja sbk whzcf bire gur ynml qbt.
  • ROT13 把Gur dhvpx oebja sbk whzcf bire gur ynml qbt.变成The quick brown fox jumps over the lazy dog.

这是一个很好的练习,可以用来尝试非标准字符串字面量和元编程。

这篇博客文章简要介绍了非标准字符串字面量。详细的元编程指南可以在手册中找到。

你可以通过添加下面描述的功能来扩展你提交的解答。

加分题 A 只需要博客文章中介绍的基础知识。加分题 B 则需要对 Julia 元编程有深入得多的了解。

加分题 A

实现一个字符串字面量,让它对字符串起到 ROT13 的作用:

R13"abcdefghijklmnopqrstuvwxyz" == "nopqrstuvwxyzabcdefghijklm"

加分题 B

实现字符串字面量 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"

来源

Wikipedia链接会在新窗口或新标签页中打开
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Julia Exercism

准备好开始 旋转密码 了吗?

注册 Exercism,借助 35 个概念128 个练习 和真人导师指导,学习并掌握 Julia,全部免费。