2024年2月11日发(作者:)

密码锁破解

题目大意:

我们有一个侦探同事,观察到一个目标人物,他是一个强盗,侦探跟随他到了一个密码仓库,在仓库中,我们能找到所有他抢劫的物品。

但是仓库门是被一个电子密码锁锁住了,不幸的是当强盗输入密码的时候我们的侦探同事不确定他所看到的密码。

密码锁的键盘长这个样子:

┌───┬───┬───┐

│ 1 │ 2 │ 3 │

├───┼───┼───┤

│ 4 │ 5 │ 6 │

├───┼───┼───┤

│ 7 │ 8 │ 9 │

└───┼───┼───┘

│ 0 │

└───┘

侦探注意到密码是: 1357, 但是,他也说,他看到的每一个数字都有可能实际上是另一个相邻的数字(水平或垂直,但不是对角线)。例如,如果密码数字是1 的话,那么也有可能是1 或者2 或者 4 。如果是5的话,那么也有可能是2 或者4 或者5 或者6 或者8。

同时,他还说,这种密码锁可以无限制的尝试,你可以输入不限制次数的密码去尝试正确的密码,不会触发警报。现在侦探希望我们能够提供一个所有可能的密码数据,来进行尝试。

意思实际上是观察到的密码本身以及考虑相邻数字的变化;

要求:

请实现以下函数 : getPin(observed)

String observed : 观察到的密码字符串

Return Object : Array ,返回可能的数组,数组包含所有的可能的密码,数组中不包含重复的密码。

举例:

getPin(“8”)

返回:[“5”,”7”,”8”,”9”,”0”]

getPin(“359”)

返回:["339","366","399","658","636","258","268","669","668","266","369","398","256","296","259","368","638","396","238","356","659","639","666","359","336","299","338","696","269","358","656","698","699","298","236","239"]

请解答(语言不限):