Wil*_*ord 4 puzzle encryption code-golf scramble cpu-word
请按照下面给出的示例输入和输出,使用最短的源代码回答一个程序,该程序将任意明文转换为相应的密文.奖励积分*表示最短的CPU时间或最少的内存使用量.
明文:快速的棕色狐狸跳过懒狗.Supercalifragilisticexpialidocious!
Ciphertext: eTh kiquc nobrw xfo smjup rvoe eth yalz .odg!uioiapeislgriarpSueclfaiitcxildcos
明文: 123 1234 12345 123456 1234567 12345678 123456789
密文: 312 4213 53124 642135 7531246 86421357 975312468
您可以将其视为向后读取所有其他字符(从单词的结尾开始),然后是剩余的字符向前.Corporation => XoXpXrXtXoX => niaorCoprto.
感谢那些指出我的描述不一致的人.这导致你们许多人走上了错误的道路,我为此道歉.规则#4应该清理.
*只有Jeff Atwood决定这样做才能获得奖励积分.由于我没有跟他核实过,机会很小.抱歉.
输入i:
' '.join(x[::-2]+x[len(x)%2::2]for x in i.split())
Run Code Online (Sandbox Code Playgroud)
处理自己的IO的替代版本:
print ' '.join(x[::-2]+x[len(x)%2::2]for x in raw_input().split())
Run Code Online (Sandbox Code Playgroud)
如果包含空格,总共66个字符.(从技术上讲,print如果从命令行运行,则可以省略,因为默认情况下,代码的计算值显示为输出.)
备用版本使用reduce:
' '.join(reduce(lambda x,y:y+x[::-1],x) for x in i.split())
Run Code Online (Sandbox Code Playgroud)
59个字符.
原始版本(偶数和奇数首先右转)输入i:
' '.join(x[::2][::-1]+x[1::2]for x in i.split())
Run Code Online (Sandbox Code Playgroud)
48个字符,包括空格.
另一个替代版本(虽然略长)稍微更有效:
' '.join(x[len(x)%2-2::-2]+x[1::2]for x in i.split())
Run Code Online (Sandbox Code Playgroud)
(53个字符)