Wejście
Niepusty kodowany ciąg znaków składający się z drukowalnych znaków ASCII (w zakresie 32-126), w którym niektóre brakujące litery zostały zastąpione _
.
Wynik
Dekodowany ciąg o tej samej długości ze wszystkimi literami zapisanymi małymi literami, w tym brakującymi.
W jaki sposób?
Edycja: Jak wspomniano w komentarzach @Deusovi, jest to wariant szyfru Bacona .
- Zbierz wszystkie litery z oryginalnego ciągu i pogrupuj je według 5. Dodatkowe litery, które nie mieszczą się w pełnej grupie 5, są ignorowane.
- Konwertuj każdą grupę na binarną: małe litery = 0 , wielkie litery = 1 . To prowadzi do listy liczb całkowitych.
- Użyj każdej wartości N na tej liście, aby zastąpić każdą
_
w oryginalnym ciągu N-tą literą alfabetu (z indeksowaniem 0), w kolejności pojawiania się.
Przykład: 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'
Zastępując brakujące litery i konwertując wszystko z powrotem na małe litery, odsłonięty zostaje oryginalny ciąg:
programming puzzles & code golf
To jest oczekiwany wynik.
Wyjaśnienia i zasady
- Brakujące litery z pewnością pojawią się na końcu łańcucha. Bardziej formalnie: nigdy nie będzie żadnej litery po pierwszej
_
w ciągu wejściowym. Mogą jednak występować inne drukowalne znaki ASCII, takie jak spacje i znaki interpunkcyjne. - Dane wejściowe z pewnością nie zawierają niepotrzebnej dużej litery: wszystkie duże litery to bity ustawione na 1, które są wymagane do odkodowania brakujących liter. Cała reszta jest zapisana małymi literami.
- Gwarantowany ciąg wejściowy. Szczególnie:
- Zawsze będzie zawierać wystarczającą liczbę pełnych grup 5 liter, aby zdekodować podkreślenia.
- Binarnie zakodowane liczby całkowite z pewnością mieszczą się w zakresie [0–25] .
- W
_
łańcuchu wejściowym może nie być wcale , w takim przypadku wystarczy zwrócić dane wejściowe. - To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach!
Przypadki testowe
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.
Niektóre dodatkowe przypadki testowe:
Input : BInar_
Output: binary
Input : 12 MonKey_
Output: 12 monkeys
Input : hyPerbolIZ__
Output: hyperbolized
Input : {[One Last Test ca__]}
Output: {[one last test case]}
_
łańcucha wejściowego, jest trochę szczególnym przypadkiem.
The input is guaranteed not to contain any useless capital letter
w przypadku braku podkreślenia nie będzie też dużej litery.
[32-126]
. Dodałem inny przypadek testowy.