Has bloqueado tu bicicleta con un candado de combinación de 3 dígitos. Ahora quieres dar un paseo y debes desbloquearlo con la ayuda del siguiente programa.
Entrada
1er parámetro
La combinación de dígitos de su bloqueo en estado bloqueado . Debe ser diferente del segundo parámetro (= la combinación del estado desbloqueado ). (¡De lo contrario, su bicicleta podría ser robada!)
Rango 000..999. Los ceros iniciales no deben omitirse.
2do parámetro
La combinación de dígitos de su bloqueo en estado desbloqueado . Este valor es tu objetivo.
Rango 000..999. Los ceros iniciales no deben omitirse.
Salida
Una lista de cada estado del bloqueo de combinación después de cada "rotación" que incluye el estado inicial (que siempre es el primer parámetro) y el último paso (que siempre es el segundo parámetro).
Algoritmo
Usted comienza a "rotar" el primer dígito uno por uno hasta llegar al dígito correcto en estado desbloqueado . Pero, como conoce el código de desbloqueo completo, gira el dígito en la dirección en la que necesita la menor cantidad de rotaciones para alcanzar el dígito en estado desbloqueado . En caso de empate, puede elegir la dirección que prefiera.
Cuando haya alcanzado el primer dígito correcto, comenzará el mismo procedimiento con el segundo y luego con el tercero.
El orden de los dígitos es entender como un círculo:
... 9 0 1 2 3 4 5 6 7 8 9 0 1 2 ...
Esto significa que la menor cantidad de rotaciones de 1 a 9 no es
1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9
= 8
pero
1 -> 0 -> 9
= 2.
Notas
- Puede confiar en las reglas de E / S predeterminadas
- Puede cambiar el orden de los parámetros.
Ejemplos
Ejemplo 1, correcto
Input: 999 001
Output:
999
099
009
000
001
Ejemplo 2, correcto
Input: 000 292
Output:
000
100
200
290
291
292
Ejemplo 3, salida incorrecta
Input: 999 121
Wrong output:
999
899 // Wrong because wrong rotation direction.
799
699
...
Correct output:
999
099
199
109
119
129
120
121
Ejemplo 4, entrada incorrecta
Input: 1 212 // Wrong because no leading zeros.
Este es el código de golf que gana la respuesta más corta.