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