Vous avez verrouillé votre vélo avec une serrure à combinaison à 3 chiffres. Maintenant, vous voulez aller faire un tour et vous devez le déverrouiller à l'aide du programme suivant.
Contribution
1er paramètre
La combinaison de chiffres de votre verrou en état verrouillé . Il doit être différent du 2ème paramètre (= la combinaison de déverrouillé état ). (Sinon, votre vélo pourrait être volé!)
Plage 000.,999. Les zéros au début ne doivent pas être omis.
2ème paramètre
La combinaison de chiffres de votre verrou à l' état déverrouillé . Cette valeur est votre objectif.
Plage 000.,999. Les zéros au début ne doivent pas être omis.
Sortie
Une liste de chaque état de la serrure à combinaison après chaque "rotation", y compris l'état initial (qui est toujours le premier paramètre) et la dernière étape (qui est toujours le deuxième paramètre).
Algorithme
Vous commencez à "faire tourner" le premier chiffre un par un jusqu'à ce que vous obteniez le chiffre correct dans l' état déverrouillé . Mais comme vous connaissez le code de déverrouillage complet, vous faites pivoter le chiffre dans le sens dans lequel vous avez besoin du plus petit nombre de rotations pour atteindre le chiffre en état déverrouillé. . En cas d'égalité, vous pouvez choisir la direction que vous préférez.
Lorsque vous avez atteint le premier chiffre correct, vous démarrez la même procédure avec le 2e puis avec le 3e.
L'ordre des chiffres est à comprendre comme un cercle:
... 9 0 1 2 3 4 5 6 7 8 9 0 1 2 ...
Cela signifie que le plus petit nombre de rotations de 1 à 9 n’est pas
1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9
= 8
mais
1 -> 0 -> 9
= 2.
Remarques
- Vous pouvez compter sur les règles d'E / S par défaut
- Vous pouvez changer l'ordre des paramètres.
Exemples
Exemple 1, correct
Input: 999 001
Output:
999
099
009
000
001
Exemple 2, correct
Input: 000 292
Output:
000
100
200
290
291
292
Exemple 3, mauvaise sortie
Input: 999 121
Wrong output:
999
899 // Wrong because wrong rotation direction.
799
699
...
Correct output:
999
099
199
109
119
129
120
121
Exemple 4, mauvaise entrée
Input: 1 212 // Wrong because no leading zeros.
Ceci est le code-golf la réponse la plus courte gagne.