您已使用3位数的密码锁锁定了自行车。现在您想去兜风,需要在以下程序的帮助下将其解锁。
输入项
第一个参数
处于锁定状态的锁的数字组合。它必须不同于第二个参数(= 解锁状态的组合)。(否则您的自行车可能会被盗!)
范围000..999。不能省略前导零。
第二个参数
处于解锁状态的锁的数字组合。此值是您的目标。
范围000..999。不能省略前导零。
输出量
每次“旋转”之后,组合锁的每个状态的列表,包括初始状态(始终为第一个参数)和最后一步(始终为第二个参数)。
算法
您开始逐个“旋转”第一个数字,直到在解锁状态下到达正确的数字为止。但是,由于您了解整个解锁代码,因此可以在需要最小旋转量的方向上旋转数字,以达到处于解锁状态的数字。如果是平局,您可以选择自己喜欢的方向。
当您到达正确的第一位数字时,请从第二位开始相同的过程,然后从第三位开始。
数字顺序应理解为圆:
... 9 0 1 2 3 4 5 6 7 8 9 0 1 2 ...
这意味着从1到9的最小旋转量不是
1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9
= 8
但
1 -> 0 -> 9
= 2。
笔记
- 您可以依靠默认I / O规则
- 您可以更改参数的顺序。
例子
示例1,正确
Input: 999 001
Output:
999
099
009
000
001
示例2,正确
Input: 000 292
Output:
000
100
200
290
291
292
示例3,输出错误
Input: 999 121
Wrong output:
999
899 // Wrong because wrong rotation direction.
799
699
...
Correct output:
999
099
199
109
119
129
120
121
示例4,错误的输入
Input: 1 212 // Wrong because no leading zeros.
这是打高尔夫球的最短答案。