Ви заблокували свій велосипед комбінованим блокуванням у 3 цифри. Тепер ви хочете покататися і потрібно розблокувати його за допомогою наступної програми.
Вхідні дані
1-й параметр
Комбінація цифр вашого блокування в заблокованому стані. Він повинен відрізнятися від 2-го параметра (= поєднання стану, що розблокується ). (Інакше ваш велосипед може бути викрадений!)
Діапазон 000..999. Не слід опускати провідні нулі.
2-й параметр
Комбінація цифр вашого блокування у розблокованому стані. Ця цінність - ваша мета.
Діапазон 000..999. Не слід опускати провідні нулі.
Вихідні дані
Список кожного стану блокування комбінації після кожного "обертання", включаючи початковий стан (який завжди є першим параметром) та останній крок (який завжди є другим параметром).
Алгоритм
Ви починаєте "обертати" першу цифру по черзі, поки не досягнете правильної цифри у розблокованому стані. Але, оскільки ви знаєте весь код розблокування, ви обертаєте цифру в тому напрямку, в якому вам потрібна найменша кількість обертів, щоб досягти цифри в незамкненому стані . У разі краватки ви можете вибрати будь-який напрямок.
Досягнувши правильної першої цифри, ви починаєте ту саму процедуру з 2-ї, а потім з 3-ї.
Порядок цифр - це розуміти як коло:
... 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.
Примітки
- Ви можете покластися на правила вводу / виводу за замовчуванням
- Ви можете змінити порядок параметрів.
Приклади
Приклад 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.
Це кодовий гольф, який виграє найкоротший відповідь.