Hai bloccato la bici con un lucchetto a combinazione di 3 cifre. Ora vuoi fare un giro e devi sbloccarlo con l'aiuto del seguente programma.
Ingresso
1o parametro
La combinazione di cifre del blocco in stato bloccato . Deve essere diverso dal secondo parametro (= la combinazione di stato sbloccato ). (Oppure la tua bici potrebbe essere rubata!)
Gamma 000..999. Gli zeri iniziali non devono essere omessi.
2o parametro
La combinazione di cifre del blocco in stato sbloccato . Questo valore è il tuo obiettivo.
Gamma 000..999. Gli zeri iniziali non devono essere omessi.
Produzione
Un elenco di ciascuno stato del blocco della combinazione dopo ogni "rotazione" incluso lo stato iniziale (che è sempre il primo parametro) e l'ultimo passaggio (che è sempre il secondo parametro).
Algoritmo
Inizi a "ruotare" la prima cifra una alla volta fino a raggiungere la cifra corretta in stato sbloccato . Tuttavia, poiché si è a conoscenza dell'intero codice di sblocco, si ruota la cifra nella direzione in cui è necessario il minor numero di rotazioni per raggiungere la cifra in stato sbloccato . In caso di pareggio puoi scegliere la direzione che preferisci.
Quando hai raggiunto la prima cifra corretta, inizi la stessa procedura con la seconda e poi con la terza.
L'ordine delle cifre è capire come un cerchio:
... 9 0 1 2 3 4 5 6 7 8 9 0 1 2 ...
Ciò significa che il minor numero di rotazioni da 1 a 9 non lo è
1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9
= 8
ma
1 -> 0 -> 9
= 2.
Gli appunti
- Puoi fare affidamento su regole I / O predefinite
- È possibile modificare l'ordine dei parametri.
Esempi
Esempio 1, corretto
Input: 999 001
Output:
999
099
009
000
001
Esempio 2, corretto
Input: 000 292
Output:
000
100
200
290
291
292
Esempio 3, output errato
Input: 999 121
Wrong output:
999
899 // Wrong because wrong rotation direction.
799
699
...
Correct output:
999
099
199
109
119
129
120
121
Esempio 4, input errato
Input: 1 212 // Wrong because no leading zeros.
Questo è code-golf vince la risposta più breve.