凯撒密码
凯撒密码移位=N是将字符串中的任何字母字符替换为以下字母的过程:N个字母表中前面的位置(在开头换行)。
这是凯撒的关键(shift=5)(假设是一个英文字母表):
这些:EFGHIJKLMNOPQRSTUVWXYZ映射到:FGHIJKLMNOPQRSTUVWXYZABCDE
这是将其应用于“你好,世界!”的结果:
“你好,世界!”“MJQQT,BTWQI!”
还有其他挑战(喜欢 这些)要求破解凯撒密码,使用密文以外的额外信息从数学上计算出移位。
这个挑战
这个挑战不会给你额外的提示。它只是要求:
«编写一个程序或函数,该程序或函数采用简短的Caesar加密文本,并极有可能找到原始的纯英语文本。»
为了避免任何疑问,我要求您尝试破解英语中的模式(例如,最丰富的字母很可能解码为“e”)。
您的功能/程序将作为输入:
- 此ascii子集中的字符串:“
abcdefghijklmnopqrstuvwxyz()-,;:“'!?
“,包含5到10个字(即用”“分隔的位”
").
它应以高精度输出:
- 转变N个(在范围内0..25)最有可能用于从由英语单词组成的未加密句子中获取此字符串的
- 或防移位M(M)(在范围内0..25)获取由英语单词组成的未加密句子需要(M=26-N除了N=0,其中M=0也是)
- 或未加密的句子本身
- (或只是它的字母字符)
评分
这两者都是代码嗅觉和测试支持,所以您需要编写一个短代码(低#字节)表现足够好(高#更正answ。)在大量测试用例上。
分数计算如下(这些是等价的):
$${\rm-score}=\frac{{\rm\#bytes}}{\rm-carcification}=\frac{10000\cdot{{\rm\#bytes}}}{\ rm\#correct\,\,answ.}=\ frac{{\rm\#bytes{}{1-\frac}\rm\#1errors}{10000}}$$
在上测试代码后10000个密文样本。最低分数(每种编程语言)获胜。
准确度必须为至少30%以获得合格答案。
10000个测试用例是在这里以下是摘录:
jubx rmnwcroh ngrbcrwp kruub cqjc fn 9 17还确定了我们总是让它计算所有0的所有后验可能性总是让它计算所有0的所有后验可能性福格利奥vrxufhv djuhh wkdw vxssob zloo eh yhub wljkw wkurxjkrxw 3 23位可靠消息人士一致认为,整个地区的供应将非常紧张zhuh qrw vhqvlwlyh wr wkh 3 23对wivv,jf zk'j rmrzcrscv kf repfev ivxriucvjj fw vtfefdzt jkrklj 17 9免费,因此无论经济状况如何,任何人都可以使用它svvecdbkdsyx yp ryg dbisxq dy cryor-rybx sx k 10 16如何在ivhlzivu kf gifultv,reu sp 17 9生产所需,以及svwev nwz,eqbp bpm illml 8 18已知,添加了
将第一列用作测试程序/函数的输入序列。
旨在正确预测输出。正确的输出以不同的有效格式在第二、第三和第四列中报告。与输出保持一致:始终以输出换档或防换档为目标(记住,这是26-N模26)或明文。
(注意:(1)电池文件是由固定长度的列组成的,它不是基于分隔符的;提供了CSV版本在这里它在必要时使用双引号,并用双引号转义双引号(""
); (2) 电池文件基于语料库,可能包含冒犯性词语)
如果您的代码运行速度很慢,或者为了证明您在诸如AttemptThisOnline之类的服务上的得分,您可以只使用测试电池的一个子集,只要您从头
而不是樱桃采摘。如果可能的话,在宣布分数之前,请尝试在整个电池或您可以处理的最大头子集上本地运行代码。