Perusahaan kabel tertentu yang terkenal memiliki fitur 'Cari Program' yang agak canggung yang bekerja melalui remote. Dibutuhkan banyak tombol untuk mendorong; jadi, sebagai pengagum ekonomi gerak, saya pikir saya akan mencari bantuan programmer untuk meminimalkan jumlah gerakan jari yang harus saya buat.
Fitur Pencarian Craptastic menampilkan tata letak sel yang dapat dipilih, 1 baris 3 sel diikuti oleh 6 baris 6 sel, yang terlihat seperti ini:
del spa sav
A B C D E F
G H I J K L
M N O P Q R
S T U V W X
Y Z 0 1 2 3
4 5 6 7 8 9
Ada sel untuk masing-masing huruf A-Z, dan spayang digunakan untuk menambahkan spasi ke string pencarian. delseharusnya digunakan untuk menghapus karakter; dan savdimaksudkan untuk digunakan untuk menyimpan string pencarian. Kami akan mengabaikan fungsi aktual ini untuk tantangan ini; tetapi sel-sel itu masih dapat dipilih untuk tujuan kita.
Kami mulai dengan string pencarian kosong dan Asel dipilih; dan kami menggunakan tombol panah kiri, kanan, atas dan bawah untuk mengubah sel yang dipilih. Ketika tombol 'OK' pusat ditekan, karakter di sel yang dipilih ditambahkan ke string pencarian. Untuk kenyamanan, kita akan menggunakan <, >, ^, vdan _untuk kiri, kanan, atas, bawah dan OK, masing-masing.
Untuk huruf dan angka, aksi tombol arah sangat mudah. Tidak ada 'bungkus'; misalnya, jika sel saat ini G, maka <tidak berpengaruh.
Jadi untuk memasukkan string pencarian BIG, kita bisa menggunakan urutan
>_>v_<<_
(awal >diperlukan untuk memindahkan kami dari sel awal default Ake sel B). Atau, tentu saja kita bisa menggunakan >_v>_<<_; tetapi perhatikan tidak ada urutan yang lebih pendek dari 8 kunci yang dapat melakukan pekerjaan.
Sekarang karena baris paling atas hanya memiliki tiga sel, aksi di sana sedikit berbeda dan sedikit mempersulit:
Pertama, jika sel yang dipilih berada di baris huruf atas A-F, ^kunci itu memindahkan sel yang dipilih tepat di atas; jadi A,Bpergi ke del, C,Dpergi ke spadan E,Fpergi ke sav.
Sebaliknya, jika sel yang dipilih adalah 'del', vkunci tersebut memindahkan sel yang dipilih A, dan >kunci membuat sel yang dipilih spa. Demikian pula vkunci memindahkan sel yang dipilih dari spake C, dan savke E.
Ini berarti bahwa misalnya, jika Anda saat ini berada di Bsel, urutannya ^vtidak mengembalikan Anda ke Bsel; alih-alih itu membawa Anda ke Asel.
Dan mulai dari Asel, urutan v>>^memindahkan kita ke Csel; sementara urutan ^>>vmemindahkan kita ke Esel.
Tantangan
Diberikan acara TV atau judul film s, yang hanya terdiri dari karakter dalam A-Z, 0-9dan space, program / fungsi Anda harus menampilkan salah satu urutan penekanan tombol dengan panjang minimal untuk dimasukkan ssebagai string pencarian dari keadaan awal dengan mode Craptastic.
Output Anda harus berupa string atau daftar nilai berbeda yang mewakili urutan atas, bawah, kanan, kiri, dan OK; jadi Anda tidak terbatas pada rangkaian karakter <>^v_(misalnya, udrl*atau daftar dengan elemen bilangan bulat 0,1,2,3,4 akan menjadi alternatif yang dapat diterima, asalkan Anda mengartikulasikan apa skema Anda).
Ini adalah kode-golf ; tabu celah biasa berlaku. Semoga peluang selalu menguntungkan Anda untuk setiap bahasa.
Uji Kasus
Di bawah ini adalah input dan contoh jawaban yang dapat diterima (urutan berbeda lainnya akan benar juga, tetapi harus paling banyak dari panjang contoh yang diberikan).
(Saya memposting ulang tombol di sini sehingga orang dapat lebih mudah bermain bersama secara visual, jika itu adalah salah satu ...)
del spa sav
A B C D E F
G H I J K L
M N O P Q R
S T U V W X
Y Z 0 1 2 3
4 5 6 7 8 9
BIG >_>v_<<_
THE OFFICE >vvv_^^_>>>^_^<_vvv_>>>^^__<<<v_^_>>_
FARGO ^>>v>_^<<v_^>>v>vv_<<<<<^_>>v_
BUFFY >_>vvv_>>>^^^__^<<vvvvv_
DALLAS >>>_<<<_^>>v>v__^^<<v_vvv_
THX1138 >vvv_^^_>>>>vv_<<v__>>_<v_
ON DEMAND >>vv_<_^^^>_v>_>_<<<<vv_^^_>vv_>>^^_
NEWS RADIO >vv_>>>^^_vvv_<<<<_^^^^>_>vvv>_^^^<<v_>>>_<v_v_
ROOM 909 ^>>v>vv_<<<__<<_^^^>_>vvvvvv>_<<<^_>>>v_
deldan savtidak berguna di sini?
deldan savtidak memiliki fungsi jika 'OK' digunakan ketika mereka dipilih; tapi itu akan membuang penekanan tombol.
FAlurus tetapi naik-turun