Anda telah mengunci sepeda Anda dengan kunci kombinasi 3 digit. Sekarang Anda ingin naik dan perlu membukanya dengan bantuan program berikut.
Memasukkan
Parameter 1
Kombinasi digit dari kunci Anda dalam keadaan terkunci . Itu harus berbeda dari parameter ke-2 (= kombinasi status tidak terkunci ). (Atau sepeda Anda bisa dicuri!)
Kisaran 000..999. Nol terkemuka tidak boleh dihilangkan.
Parameter ke-2
Kombinasi digit dari kunci Anda dalam keadaan tidak terkunci . Nilai ini adalah tujuan Anda.
Kisaran 000..999. Nol terkemuka tidak boleh dihilangkan.
Keluaran
Daftar setiap keadaan kunci kombinasi setelah setiap "rotasi" termasuk keadaan awal (yang selalu menjadi parameter 1) dan langkah terakhir (yang selalu menjadi paramater ke-2).
Algoritma
Anda mulai "memutar" digit pertama satu per satu hingga Anda mencapai digit yang benar dalam keadaan tidak terkunci . Tetapi, karena Anda mengetahui seluruh kode pembuka kunci, Anda memutar digit ke arah yang Anda perlukan jumlah rotasi terkecil untuk mencapai angka dalam keadaan tidak terkunci . Dalam kasus dasi, Anda dapat memilih arah apa pun yang Anda inginkan.
Ketika Anda telah mencapai angka pertama yang benar, Anda memulai prosedur yang sama dengan tanggal 2 dan kemudian dengan tanggal 3.
Urutan digit adalah dipahami sebagai lingkaran:
... 9 0 1 2 3 4 5 6 7 8 9 0 1 2 ...
Ini berarti, jumlah rotasi terkecil dari 1 hingga 9 tidak
1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9
= 8
tapi
1 -> 0 -> 9
= 2.
Catatan
- Anda dapat mengandalkan aturan I / O Default
- Anda dapat mengubah urutan parameter.
Contohnya
Contoh 1, benar
Input: 999 001
Output:
999
099
009
000
001
Contoh 2, benar
Input: 000 292
Output:
000
100
200
290
291
292
Contoh 3, output salah
Input: 999 121
Wrong output:
999
899 // Wrong because wrong rotation direction.
799
699
...
Correct output:
999
099
199
109
119
129
120
121
Contoh 4, input salah
Input: 1 212 // Wrong because no leading zeros.
Ini adalah kode-golf jawaban tercepat yang menang.