问题:
两个敌对的秘密特工设计了一种极好的(对您来说)通信方式!
加密过程的工作原理如下:
1)取每个字母的ascii等效项。(不发送空格,数字或标点符号)
2)对于消息中的每个字母,将它和它后面的字母(如果存在,如果不存在,则应视为0)的等效字母乘以(此乘积存储在数组/列表中)并求和(此数字也存储在其他列表中)。
3)将两个列表(总和和乘积)连接在一起(总和列表,然后是倍数列表,进入同一数组)并传输。
您需要编写最小的程序来反转此过程并解密以这种格式发送的消息!
输入和输出对示例:
[173, 209, 216, 219, 198, 198, 225, 222, 208, 100, 7272, 10908, 11664, 11988, 9657, 9657, 12654, 12312, 10800, 0] -> “HelloWorld”
[131, 133, 164, 195, 197, 99, 4290, 4422, 6499, 9506, 9702, 0] -> “ABCabc”
这是代码高尔夫球,因此以字节为单位的最小解决方案获胜。
错误消息是允许的。
如果在提交中指定,则可以为程序提供列表1维数组或逗号分隔的字符串。默认值为数组/列表。
1
为什么倍数列表仍然存在?只是总和就够了。
—
orlp
@orlp也许允许更多的高尔夫机会?:)
—
乔纳森·艾伦
@orlp哦,不,你宠坏了乐趣!
—
Erik the Outgolfer
@JonathanAllan部分正确。我希望这两个秘密特工显得超级愚蠢,以便他们在“代码”中添加不必要的部分。它还增加了一些可能出现的程序。
—
iPhoenix
@orlp仅倍数是不够的,对吗?
—
ericw31415 '18年