灵感来自这个挑战(感谢@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>"
注意:在我使用的第六个测试用例中,引号仅出于可读性'
考虑"
。
abc, def -> [['a', 'b', 'c'], ['d', 'e', 'f']]