动机
在此挑战中,您的任务是将两个字符串相乘,这自然会引入一种取字符串平方根的方法。
它是如何工作的?
给定一个字符串(例如pub
),您需要做的第一件事就是确定每个字符的ASCII代码:
"pub" -> [112, 117, 98]
接下来,[0..94]
通过减去32
每个值将这些代码映射到范围:
[112, 117, 98] -> [80, 85, 66]
现在,您需要为每个值找到其根模95
(例如40*40 % 95 = 80
,也可以选择55
):
[80, 85, 66] -> [40, 35, 16]
最后,您将其映射回范围[32..126]
并将其转换回字符串:
[40, 35, 16] -> [72, 67, 48] -> "HC0"
的确"HC0" ⊗ "HC0" = "pub"
,您可以从这里的其他挑战中找到解决方案,以此来验证。
那些熟悉模算术的人可能注意到平方根模数95
并不总是存在,例如,没有根2
。在这种情况下,未定义字符串的平方根,并且您的程序/函数可能会崩溃,不确定地循环等。
为了方便起见,以下是具有平方根的字符列表(第一个是空格):
!$%&)+03489:>CDGLMQVW]`bjlpqu
规则
- 您将编写一个将字符串(或字符列表)作为参数并返回任何平方根(如果存在)的程序/函数
- 您可以假设输入始终具有平方根
- 输入内容可能包含一个空字符串
- 输入将在可打印范围(
[32..126]
)中 - 输出将打印到控制台,或者如果存在平方根,则返回一个字符串
- 如果平方根不存在,则程序/函数的行为将不确定
- 如果选择将根目录打印到控制台,则尾随换行符或空格都可以
测试用例
请注意,这些不一定是唯一的解决方案:
'' -> ''
'pub' -> 'HC0'
'pull!' -> 'HC33!'
'M>>M' -> '>MM>'
'49' -> '4%'
'64' -> undefined
'Hello, World!' -> undefined
0-94
(这是可打印的范围),这是一个错字-对此感到抱歉。