Натхненний цим викликом (спасибі @cairdcoinheringaahing за назву!), Ваше завдання - взяти дві друковані рядки ASCII та помножити їх на стихійні лінії з наступними правилами.
Як це працює?
Давши два рядки (наприклад, split
та isbn
), ви спершу обріжете довший такий, щоб вони мали однакову довжину, а потім визначите їх ASCII-коди :
split -> spli -> [115, 112, 108, 105]
isbn -> isbn -> [105, 115, 98, 110]
Наступним кроком буде відображення їх у діапазон [0..94]
шляхом віднімання 32
кожного коду:
[115, 112, 108, 105] -> [83, 80, 76, 73]
[105, 115, 98, 110] -> [73, 83, 66, 78]
Тепер ви помножите їх на модульний модуль 95
(щоб залишитися в діапазоні для друку):
[83, 80, 76, 73] ⊗ [73, 83, 66, 78] -> [74, 85, 76, 89]
Додати, 32
щоб повернутися до асортименту [32..126]
:
[74, 85, 76, 89] -> [106, 117, 108, 121]
І завершальним кроком є їх відновлення до символів ASCII:
[106, 117, 108, 121] -> "july"
Правила
- Ви напишете програму / функцію, яка реалізує описані кроки на двох рядках і друкує або повертає отриманий рядок
- Формат введення є гнучким: ви можете взяти два рядки, набір рядків, список рядків тощо.
- Вхід може складатися з одного або двох порожніх рядків
- Вхід буде символами в діапазоні для друку (
[32..126]
) - Вихід або друкується на консолі, або ви повертаєте рядок
- На виході допускається мати пробіли білого кольору
Тестові справи
"isbn", "split" -> "july"
"", "" -> ""
"", "I don't matter" -> ""
" ", "Me neither :(" -> " "
"but I do!", "!!!!!!!!!" -> "but I do!"
'quotes', '""""""' -> 'ck_iKg'
"wood", "hungry" -> "yarn"
"tray", "gzip" -> "jazz"
"industry", "bond" -> "drop"
"public", "toll" -> "fall"
"roll", "dublin" -> "ball"
"GX!", "GX!" -> "!!!"
"4 lll 4", "4 lll 4" -> "4 lll 4"
"M>>M", "M>>M" -> ">MM>"
Примітка : цитати призначені саме для читання, у 6-му тестовому випадку я використовував '
замість цього "
.
abc, def -> [['a', 'b', 'c'], ['d', 'e', 'f']]