Contribution
Chaîne codée non vide composée de caractères ASCII imprimables (dans la plage 32-126), dans laquelle certaines lettres manquantes ont été remplacées par _
.
Sortie
Chaîne décodée de même longueur avec toutes les lettres en minuscule, y compris les lettres manquantes.
Comment?
Edit: Comme mentionné par @Deusovi dans les commentaires, il s'agit d'une variante du chiffrement de Bacon .
- Rassemblez toutes les lettres de la chaîne d'origine et regroupez-les par 5. Les lettres supplémentaires qui ne font pas partie d'un groupe de 5 sont ignorées.
- Convertissez chaque groupe en binaire: minuscule = 0 , majuscule = 1 . Cela conduit à une liste d'entiers.
- Utilisez chaque valeur N dans cette liste pour remplacer chacune
_
dans la chaîne d'origine par la N- ème lettre de l'alphabet (indexé par 0), dans l'ordre d'apparition.
Exemple: 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'
En remplaçant les lettres manquantes et en reconvertissant le tout en minuscules, la chaîne d'origine est dévoilée:
programming puzzles & code golf
C'est la sortie attendue.
Clarifications et règles
- Les lettres manquantes sont garanties pour apparaître à la fin de la chaîne. Plus formellement: il n'y aura jamais de lettre après la première
_
dans la chaîne d'entrée. Cependant, il peut exister d'autres caractères ASCII imprimables tels que des espaces et des signes de ponctuation. - Il est garanti que l’entrée ne contient aucune lettre majuscule inutile : toutes les lettres majuscules sont des bits mis à 1 qui sont nécessaires pour décoder les lettres manquantes. Tout le reste est en minuscule.
- La chaîne d'entrée est garantie d'être valide. Surtout:
- Il contiendra toujours suffisamment de groupes complets de 5 lettres pour décoder les traits de soulignement.
- Les entiers codés en binaire sont garantis dans la plage [0-25] .
- Il peut ne pas y
_
en avoir du tout dans la chaîne d'entrée, auquel cas il vous suffit de renvoyer l'entrée. - C'est du code-golf , donc la réponse la plus courte en octets gagne!
Cas de test
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.
Quelques cas de test supplémentaires:
Input : BInar_
Output: binary
Input : 12 MonKey_
Output: 12 monkeys
Input : hyPerbolIZ__
Output: hyperbolized
Input : {[One Last Test ca__]}
Output: {[one last test case]}
_
de chaîne d'entrée est un cas particulier.
The input is guaranteed not to contain any useless capital letter
s'il n'y avait pas de caractère de soulignement, il n'y aurait pas non plus de lettre majuscule.
[32-126]
. J'ai ajouté un autre cas de test.