Entrada
Uma sequência codificada não vazia que consiste em caracteres ASCII imprimíveis (no intervalo 32-126), onde algumas letras ausentes foram substituídas _
.
Resultado
Uma sequência decodificada do mesmo comprimento com todas as letras em minúsculas, incluindo as que estão faltando.
Quão?
Edit: Como mencionado por @Deusovi nos comentários, esta é uma variante da cifra de Bacon .
- Reúna todas as letras na sequência original e agrupe-as por 5. Letras adicionais que não couberem em um grupo completo de 5 serão ignoradas.
- Converta cada grupo em binário: minúsculo = 0 , maiúsculo = 1 . Isso leva a uma lista de números inteiros.
- Use cada valor N nesta lista para substituir cada um
_
na sequência original pela N- ésima letra do alfabeto (indexada 0), em ordem de aparência.
Exemplo: 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'
Substituindo as letras ausentes e convertendo tudo de volta para minúsculas, a sequência original é revelada:
programming puzzles & code golf
Esta é a saída esperada.
Esclarecimentos e regras
- As letras ausentes são garantidas para aparecer no final da seqüência de caracteres. Mais formalmente: nunca haverá nenhuma letra após a primeira
_
na sequência de entrada. No entanto, pode haver outros caracteres ASCII imprimíveis, como espaços e sinais de pontuação. - A entrada é garantida para não conter nenhuma letra maiúscula inútil : todas as letras maiúsculas são bits configurados como 1 necessários para decodificar as letras ausentes. Todo o resto está em minúsculas.
- A sequência de entrada é garantida como válida. Especialmente:
- Sempre conterá grupos completos suficientes de 5 letras para decodificar os sublinhados.
- Os números inteiros codificados em binário estão garantidos no intervalo [0-25] .
- Pode não haver nenhuma
_
na string de entrada; nesse caso, você apenas precisa retornar a entrada. - Isso é código-golfe , então a resposta mais curta em bytes vence!
Casos de teste
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.
Alguns casos de teste extras:
Input : BInar_
Output: binary
Input : 12 MonKey_
Output: 12 monkeys
Input : hyPerbolIZ__
Output: hyperbolized
Input : {[One Last Test ca__]}
Output: {[one last test case]}
_
na string de entrada é um caso especial.
The input is guaranteed not to contain any useless capital letter
, caso não haja sublinhado, também não haverá letra maiúscula.
[32-126]
. Eu adicionei outro caso de teste.