Вдохновленный этим вызовом (спасибо @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']]