输入项
一个非空的编码字符串,由可打印的ASCII字符组成(范围为32-126),其中一些丢失的字母已替换为_
。
输出量
长度相同的解码字符串,所有字母均小写,包括丢失的字母。
怎么样?
编辑:正如@Deusovi在评论中提到的,这是Bacon密码的一种变体。
- 收集原始字符串中的所有字母,然后将它们分组为5。不适合全部5个字符的其他字母将被忽略。
- 将每个组转换为二进制:小写= 0,大写= 1。这导致一个整数列表。
- 使用此列表中的每个值N,按出现顺序
_
将原始字符串中的每个值替换为字母的第N个字母(0索引)。
例: prOGraMMIng PuZZleS & cOde ____
prOGr --> 00110 --> 6 --> 7th letter = 'g'
aMMIn --> 01110 --> 14 --> 15th letter = 'o'
gPuZZ --> 01011 --> 11 --> 12th letter = 'l'
leScO --> 00101 --> 5 --> 6th letter = 'f'
通过替换丢失的字母并将所有内容都转换回小写,原始字符串被公开:
programming puzzles & code golf
这是预期的输出。
澄清和规则
- 保证缺少的字母出现在字符串的末尾。更正式地讲:
_
输入字符串中的第一个字母之后绝不会有任何字母。但是,可能还有其他可打印的ASCII字符,例如空格和标点符号。 - 保证输入中不包含任何无用的大写字母:所有大写字母都是设置为1的位,用于解码丢失的字母。其他所有内容均为小写。
- 输入的字符串保证有效。特别:
- 它将始终包含足够的完整组(由5个字母组成)以解码下划线。
- 二进制编码的整数保证在[0-25]范围内。
_
输入字符串中可能根本没有任何内容,在这种情况下,您只需要返回输入即可。- 这是代码高尔夫球,因此最短答案以字节为单位!
测试用例
Input : hello!
Output: hello!
Input : helLO, worl_!
Output: hello, world!
Input : i aM yoUr faTh__.
Output: i am your father.
Input : prOGraMMIng PuZZleS & cOde ____
Output: programming puzzles & code golf
Input : Can YOu gUesS tHE ENd oF This ____?
Output: can you guess the end of this text?
Input : THe qUICk brown FOx JUMps oVEr the la__ ___.
Output: the quick brown fox jumps over the lazy dog.
Input : RoadS? wHERe we're goinG WE doN't need _____.
Output: roads? where we're going we don't need roads.
Input : thE greatESt Trick thE DeVIl EVer PUllEd wAs CONvInciNg tHe WorLD h_ ____'_ _____.
Output: the greatest trick the devil ever pulled was convincing the world he didn't exist.
一些额外的测试用例:
Input : BInar_
Output: binary
Input : 12 MonKey_
Output: 12 monkeys
Input : hyPerbolIZ__
Output: hyperbolized
Input : {[One Last Test ca__]}
Output: {[one last test case]}
_
输入字符串中不存在的规则有些特殊情况。
The input is guaranteed not to contain any useless capital letter
,如果没有下划线,也将不会使用大写字母。
[32-126]
。我添加了另一个测试用例。