Python: 每日一题 36

2017-11-27 13:21:00
六月
来源:
http://bbs.fishc.com/thread-86668-1-1.html
转贴 693
# ┌───┬───┬───┐
# │ 1 │ 2 │ 3 │
# ├───┼───┼───┤
# │ 4 │ 5 │ 6 │
# ├───┼───┼───┤
# │ 7 │ 8 │ 9 │
# └───┼───┼───┘
#       │ 0 │
#      └───┘

好了,警探,我们的一个同事成功地观察到了我们的目标人,Robby the抢劫犯。我们跟着他来到一个秘密仓库,在那里我们假设能找到所有偷来的东西。这个仓库的门是由一个电子组合锁锁闭的(键盘如上图)。不幸的是,我们的间谍不确定他看到当罗比进入它的时候那个PIN。

他指出,PIN 1357,但他也说,他看到的每一个数字可能实际上是另一个相邻的数字(水平或垂直,但不是对角)。
例如1,它也可以是2或4。
例如5,它也可以是2、4、6或8。

他也提到过,他知道这种锁。你可以输入无限数量的错误的,它们永远不会锁定系统或发出警报。这就是为什么我们可以尝试所有可能的变化。
观察到的可能是PIN本身和所有的变化考虑相邻的数字
你能帮我们找出这些变化吗?如果有一个函数,它会返回一个所有变量的数组,其长度为1到8位。我们可以命名函数getPINs(python中的get_pins)。但是请注意,所有的PIN,观察到的和结果,都必须是字符串,因为有可能以“0”开头。我们已经为您准备了一些测试用例。
警探,我们指望你了!

OK,今天的题目还有点RPG色彩!不知道题意是否明确了,这是经过翻译软件后,我稍微整理的内容。最关键的部分我已经用红字标出。

同样的,下面我给出测试代码,test.py请参见本专辑33,34题中。
  1. expectations = [('8', ['5','7','8','9','0']),
  2.                 ('11',["11", "22", "44", "12", "21", "14", "41", "24", "42"]),
  3.                 ('369', ["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"])]

  4. for tup in expectations:
  5.   test.assert_equals(sorted(get_pins(tup[0])), sorted(tup[1]), 'PIN: ' + tup[0])
发表评论
评论通过审核后显示。