вход
Непустая закодированная строка, состоящая из печатных символов ASCII (в диапазоне 32-126), где некоторые пропущенные буквы были заменены на _
.
Выход
Декодированная строка одинаковой длины со всеми буквами в нижнем регистре, включая пропущенные.
Как?
Редактировать: Как упомянуто @Deusovi в комментариях, это вариант шифра Бэкона .
- Соберите все буквы в исходной строке и сгруппируйте их по 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]
. Я добавил еще один тест.