Saya punya konter. Ini adalah perangkat kecil yang terlihat seperti ini:
Layar beralih dari 0000ke 9999. Ini memiliki tombol kecil di bagian atas yang meningkatkan hitungan oleh 1, dan tombol kecil di sebelah kanan yang tujuannya adalah untuk mengatur ulang penghitung kembali ke 0.
Sekarang, hal tentang tombol kecil adalah bahwa jika Anda memutarnya ke belakang, Anda dapat membuatnya menambah angka apa pun yang Anda inginkan setelah Anda memutarnya lagi. Jadi jika saya menekan tombol penghitung 10 kali sehingga penghitung itu muncul 0010, saya kemudian dapat memutar kenop ke belakang sampai saya mendengar bunyi klik kecil, lalu putar ke depan lagi dan membuatnya lurus 0090.
Namun, kenop akan selalu meningkatkan semua kemunculan angka yang sama sebanyak 1 setiap kali mendorong angka ke depan. Jadi, jika penghitung muncul 6060, Anda hanya dapat membuatnya bertambah menjadi 7070, bukan ke 6070atau 7060. Juga, kenop akan berguling 9ke atas 0tanpa membawa, jadi 0990akan maju ke 0000bukan 1000atau 1100.
Saya ingin tahu cara paling efisien untuk mengatur penghitung ke nomor tertentu. Tugas Anda adalah menulis program atau fungsi yang akan menentukan urutan terpendek dari penekanan tombol dan kemajuan tombol yang diperlukan untuk melakukannya.
Program Anda akan mengambil sebagai masukan angka 4 digit dari 0000ke 9999, dan kembali serangkaian langkah dalam format berikut:
> 0001
C
> 0093
C12345678C12345678CCC
> 1000
C12345678C12345678C12345678C12345678C12345678C12345678C12345678C
> 9999
012345678
Di mana Csingkatan "push the counter button" dan angka apa pun Ddari 0 hingga 9 berarti "gunakan kenop untuk memajukan semua kemunculan Doleh 1".
Program Anda harus menghasilkan urutan langkah yang valid untuk semua kemungkinan kombinasi empat digit, dan akan dinilai dengan jumlah langkah yang diperlukan untuk semua 10.000 kasing. Dalam kasus seri (kemungkinan besar ketika algoritma optimal ditemukan), kode yang lebih pendek akan menang.

0010menjadi seperti0020itu? Atau bisakah Anda memutar kenop ke belakang? Dan juga, apakah setiap "D" dihitung sebagai "D" jumlah kemajuan kenop (misalnya, apakah1234567berarti memutar kenop 1 kali, lalu 2 kali, lalu 3 kali, begitu seterusnya)? Atau apakah itu hanya menandakan setiap kenop terpisah (misalnya, apakah1234567hanya berarti memutar kenop 7 kali)?