Bạn đã khóa chiếc xe đạp của mình với khóa kết hợp gồm 3 chữ số. Bây giờ bạn muốn đi xe và cần mở khóa với sự trợ giúp của chương trình sau.
Đầu vào
Tham số 1
Sự kết hợp chữ số của khóa của bạn trong trạng thái khóa . Nó phải khác với tham số thứ 2 (= sự kết hợp của trạng thái đã mở khóa ). (Hoặc nếu không xe đạp của bạn có thể bị đánh cắp!)
Phạm vi 000..999. Các số 0 đứng đầu không được bỏ qua.
Tham số thứ 2
Sự kết hợp chữ số của khóa của bạn trong trạng thái mở khóa . Giá trị này là mục tiêu của bạn.
Phạm vi 000..999. Các số 0 đứng đầu không được bỏ qua.
Đầu ra
Danh sách từng trạng thái của khóa kết hợp sau mỗi lần "xoay" bao gồm trạng thái ban đầu (luôn luôn là tham số thứ 1) và bước cuối cùng (luôn luôn là tham số thứ 2).
Thuật toán
Bạn bắt đầu "xoay" từng chữ số đầu tiên cho đến khi bạn đạt được chữ số chính xác ở trạng thái mở khóa . Nhưng, vì bạn có kiến thức về toàn bộ mã mở khóa, bạn xoay chữ số theo hướng bạn cần số vòng quay nhỏ nhất để đạt được chữ số ở trạng thái mở khóa . Trong trường hợp cà vạt, bạn có thể chọn bất cứ hướng nào bạn thích.
Khi bạn đã đạt được chữ số đầu tiên chính xác, bạn bắt đầu quy trình tương tự với số 2 và sau đó với số thứ ba.
Thứ tự của các chữ số là để hiểu như một vòng tròn:
... 9 0 1 2 3 4 5 6 7 8 9 0 1 2 ...
Điều này có nghĩa là, số lượng vòng quay nhỏ nhất từ 1 đến 9 không phải là
1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9
= 8
nhưng
1 -> 0 -> 9
= 2.
Ghi chú
- Bạn có thể dựa vào quy tắc I / O mặc định
- Bạn có thể thay đổi thứ tự của các tham số.
Ví dụ
Ví dụ 1, đúng
Input: 999 001
Output:
999
099
009
000
001
Ví dụ 2, đúng
Input: 000 292
Output:
000
100
200
290
291
292
Ví dụ 3, đầu ra sai
Input: 999 121
Wrong output:
999
899 // Wrong because wrong rotation direction.
799
699
...
Correct output:
999
099
199
109
119
129
120
121
Ví dụ 4, nhập sai
Input: 1 212 // Wrong because no leading zeros.
Đây là code-golf câu trả lời ngắn nhất chiến thắng.