Вхідні дані
Непорожня закодована рядок, що складається з друкованих символів 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]
. Я додав ще один тестовий випадок.