Zablokowałeś swój rower 3-cyfrowym zamkiem szyfrowym. Teraz chcesz wybrać się na przejażdżkę i odblokować ją za pomocą następującego programu.
Wkład
1. parametr
Kombinacja cyfr zamka w stanie zablokowanym . Musi różnić się od drugiego parametru (= kombinacja stanu odblokowanego ). (Albo twój rower może zostać skradziony!)
Zakres 000..999. Zera wiodącego nie można pominąć.
2. parametr
Kombinacja cyfr zamka w stanie odblokowanym . Ta wartość jest twoim celem.
Zakres 000..999. Zera wiodącego nie można pominąć.
Wydajność
Lista każdego stanu zamka szyfrowego po każdym „obrocie”, w tym stan początkowy (który zawsze jest pierwszym parametrem) i ostatni krok (który zawsze jest drugim parametrem).
Algorytm
Zaczynasz „obracać” pierwszą cyfrę jeden po drugim, aż do uzyskania prawidłowej cyfry w stanie odblokowanym . Ponieważ jednak znasz cały kod odblokowujący, obracasz cyfrę w kierunku, w którym potrzebujesz najmniejszej liczby obrotów, aby osiągnąć cyfrę w stanie odblokowanym . W przypadku remisu możesz wybrać dowolny kierunek.
Po osiągnięciu poprawnej pierwszej cyfry rozpocznij tę samą procedurę od drugiej, a następnie od trzeciej.
Kolejność cyfr należy rozumieć jako okrąg:
... 9 0 1 2 3 4 5 6 7 8 9 0 1 2 ...
Oznacza to, że najmniejsza liczba obrotów od 1 do 9 nie jest
1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9
= 8
ale
1 -> 0 -> 9
= 2
Notatki
- Możesz polegać na domyślnych regułach we / wy
- Możesz zmienić kolejność parametrów.
Przykłady
Przykład 1, poprawny
Input: 999 001
Output:
999
099
009
000
001
Przykład 2, poprawny
Input: 000 292
Output:
000
100
200
290
291
292
Przykład 3, złe wyjście
Input: 999 121
Wrong output:
999
899 // Wrong because wrong rotation direction.
799
699
...
Correct output:
999
099
199
109
119
129
120
121
Przykład 4, nieprawidłowe wprowadzanie
Input: 1 212 // Wrong because no leading zeros.
To jest golfowy kod, który wygrywa najkrótsza odpowiedź.