这些测试用例是否正确



在处理谷歌foobar问题时,我遇到了一个提示:

Boolean教授,一个臭名昭著的疯狂科学家,刚刚发现他珍贵的兔子标本逃脱了!他急忙打电话给实验室电话上的安全爪牙。然而,兔子逃跑者破解了电话以加快她的逃跑速度!她留下了一个带有以下线索的标志:拨打的每个数字都必须是一个数字,骑士棋子可以从拨打的最后一个数字到达 - 也就是说,您必须在一个方向上精确移动 2 个空格,然后在垂直方向上移动 1 个空格才能拨打下一个正确的数字。你可以拨打任何你想开始的号码,但后续号码必须遵守骑士的移动规则。

实验室电话的号码排列方式如下:第一行为1、2、3;第二行为4、5、6;第三行为7、8、9;第四行为空白,0,空白。

1 2 3
4 5 6
7 8 9
  0 

例如,如果您刚刚拨打了 1,则您拨打的下一个号码必须是 6 或 8。如果您刚刚拨打了 6,则下一个号码必须是 1 或 7。

布尔教授希望您了解在这些条件下他可以拨打多少个不同的电话号码。编写一个名为 answer(x, y, z( 的函数,用于计算可以拨打的电话号码数量,这些电话号码以数字 x 开头,以数字 y 结尾,总共由 z 位组成。将此数字输出为字符串,表示以 10 为基数的数字。

x 和 y 将是 0 到 9 之间的数字。z 将介于 1 和 100 之间(含 1 和 100(。

测试用例

输入: (整数( x = 6 (整数( y = 2 (整数( z = 5输出: (字符串("6">

输入: (整数( x = 1 (整数( y = 5 (整数( z = 100输出: (字符串("0">

输入: (整数( x = 3 (整数( y = 7 (整数( z = 1输出: (字符串("0">


我觉得第一个测试用例是错误的,因为在绘制决策树后,我发现唯一可能的数字是 61672、67272、67292、67672,只有 4 个。关于这个问题,我有什么误解或遗漏的地方吗?

我不

认为测试用例是错误的,但是声明

如果您刚刚拨打了 6,则下一个号码必须是 1 或 7。

是错误的。无法从 6 到 0 会使问题没有任何意义。至于您的评论,空白不是有效的动作,但这与 6 -> 0 有效有什么关系?

1 2 3  
4 5 6  
7 8 9  
  0

显然,6 -> 0 是一个有效的移动,不涉及空白。

相关内容

最新更新