介绍:
在我小时候编写的文档中,我存储了许多不同的密码,我选择了一些我认为最适合挑战的密码(不太琐碎,也不太难),并将它们转变为挑战。它们中的大多数仍处于沙箱中,我不确定是否要全部发布还是仅发布其中几个。但是,这是第一个开始的事情。
计算机密码将给定的文本加密为给定的“随机”字符组length
。如果这样的组包含一个数字,它将使用该数字索引到自己的加密字符组中。如果组中没有数字,则表示使用了第一个字符。
例如,假设我们要加密this is a computer cipher
给定长度的文本5
。这是一个潜在的输出(请注意:在下面的示例中,数字为1索引):
t h i s i s a c o m p u t e r c i p h e r (without spaces of course, but added as clarification)
qu5dt hprit k3iqb osyw2 jii2o m5uzs akiwb hwpc4 eoo3j muxer z4lpc 4lsuw 2tsmp eirkr r3rsi b5nvc vid2o dmh5p hrptj oeh2l 4ngrv (without spaces of course, but added as clarification)
让我们以几个小组为例来说明如何解密该小组:
qu5dt
:该组包含一个数字5
,因此该组的(第1个索引)第5个字符是用于解密文本的字符:t
。hprit
:该组不包含数字,因此该组的第一个字符隐含地用于解密的文本:h
。osyw2
:该组包含一个数字2
,因此该组的(第1个索引)第二个字符是用于解密文本的字符:s
。
挑战:
给定一个整数length
和一个字符串word_to_encipher
,输出一个如上所述的随机加密的字符串。
您只需加密给定的length
和word_to_encipher
,因此也无需创建解密程序/函数。但是,我可能会在将来对解密提出第二部分挑战。
挑战规则:
- 您可以假设
length
将会在范围内[3,9]
。 - 您可以假定
word_to_encipher
遗嘱中仅包含字母。 - 您可以使用完整的小写字母或完整的大写字母(请说明您在答案中使用了哪一个)。
- 您的输出,每个组以及组中数字的位置(如果存在)应该一致地随机。因此,字母表中的所有随机字母都有相同的出现机会;每个组中加密字母的位置出现的机会相同;并且数字的位置具有相同的出现机会(除非是第一个字符且没有数字;而且显然不能与加密的字符位于同一位置)。
- 您也可以使用0索引数字而不是1索引数字。请说明您在答案中使用了哪两个。
- 数字
1
(或0
当索引为0时)将永远不会出现在输出中。因此b1ndh
,不是有效的密码“ b”组。然而,b4tbw
是有效的,其中所述4
<br/>加密的b
在第4(1-索引)的位置,以及其他字符b
,t
,w
是随机的(巧合还包含b
)。的其它可能的有效组length
5加密被字符“B”是:abcd2
,ab2de
,babbk
,hue5b
,等。
通用规则:
- 这是代码高尔夫球,因此最短答案以字节为单位。
不要让代码高尔夫球语言阻止您发布使用非代码高尔夫球语言的答案。尝试针对“任何”编程语言提出尽可能简短的答案。 - 标准规则适用于具有默认I / O规则的答案,因此允许您使用STDIN / STDOUT,具有正确参数的函数/方法以及返回类型的完整程序。你的来电。
- 默认漏洞是禁止的。
- 如果可能的话,请添加一个带有测试代码的链接(即TIO)。
- 另外,强烈建议为您的答案添加说明。
测试用例:
Input:
Length: 5
Word to encipher: thisisacomputercipher
Possible output:
qu5dthpritk3iqbosyw2jii2om5uzsakiwbhwpc4eoo3jmuxerz4lpc4lsuw2tsmpeirkrr3rsib5nvcvid2odmh5phrptjoeh2l4ngrv
Input:
Length: 8
Word to encipher: test
Possible output:
ewetng4o6smptebyo6ontsrbtxten3qk
Input:
Length: 3
Word to encipher: three
Possible output:
tomv3h2rvege3le
abcd2
,ab2de
,babbk
都一样吗?也b1akk
有效吗?
b1akk
我会说不。将在挑战说明中对其进行编辑以澄清。如果第一个字符是已加密的字符,则不应出现数字。
"a??"
有676个可能的结果,但是"1a?"
,"?a1"
,"2?a"
,"?2a"
,有only104结果。因此,如果我试图从所有780个结果中选择一个结果,则“加密字母的位置”的分布为13:1:1,而不是1:1:1。我认为这是“均匀随机”的工作方式。