Code Golf - Word Scrambler

Wil*_*ord 4 puzzle encryption code-golf scramble cpu-word

请按照下面给出的示例输入和输出,使用最短的源代码回答一个程序,该程序将任意明文转换为相应的密文.奖励积分*表示最短的CPU时间或最少的内存使用量.

例1:

明文:快速的棕色狐狸跳过懒狗.Supercalifragilisticexpialidocious!

Ciphertext: eTh kiquc nobrw xfo smjup rvoe eth yalz .odg!uioiapeislgriarpSueclfaiitcxildcos

例2:

明文: 123 1234 12345 123456 1234567 12345678 123456789

密文: 312 4213 53124 642135 7531246 86421357 975312468

规则:

  1. 标点符号定义为包含在最接近的单词中.
  2. 单词的中心定义为上限((strlen(word)+1)/ 2).
  3. 空格被忽略(或折叠).
  4. 奇怪的话首先向右移动.甚至单词首先向左移动.

您可以将其视为向后读取所有其他字符(从单词的结尾开始),然后是剩余的字符向前.Corporation => XoXpXrXtXoX => niaorCoprto.

感谢那些指出我的描述不一致的人.这导致你们许多人走上了错误的道路,我为此道歉.规则#4应该清理.

*只有Jeff Atwood决定这样做才能获得奖励积分.由于我没有跟他核实过,机会很小.抱歉.

Amb*_*ber 7

Python,50个字符

输入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个字符)