救命!我刚刚登录Stack Exchange,但是忘记了密码!我需要一种方法来解决这个问题,然后再注销。
幸运的是,我是一名出色的黑客。我不仅能够找到密码的哈希,而且还发现了Stack Exchange的哈希算法!它采用每个数字的ASCII值乘以该数字的位置,然后将所有这些值相加。例如:
"135" -> 1*49 + 2*51 + 3*53 = 310
我记得我的密码是3位数字,每个字符是一个介于0到5(含0和5)之间的数字(这样它将与regex:匹配^[0-5]{3}$
),但是仍然有太多的猜测可能性。我需要一个可以将哈希转换回潜在密码的程序,但是尽管是一名专业的黑客,但我无法编写代码来挽救生命!我可以手动编写这些测试:
input -> output
288 -> 000 // lowest possible hash
290 -> 200, 010
298 -> 022, 050, 103, 131, 212, 240, 321, 402, 430, 511
318 -> 555 // highest possible hash
你们中的一个可以为我编写一个程序,该程序将散列并打印我可能使用的所有可能的密码吗?
输入将始终能够产生至少一个有效密码。只要可以清楚地标识字符串,就可以使用任何输出格式。我也不担心前导零,因此,如果可能的密码是001
,我也将接受01
或1
。
请帮助我避免被Stack Exchange拒之门外!
计分
这是代码高尔夫球,因此每种语言中最短的答案将获胜!
"135" -> 1*49 + 2*51 + 3*53 = 310
54
我可以算出前面的零。
1
Ascii值49
代替了48
?