Tujuan
Terkadang menu makan malam bisa memiliki nama panjang lebar. Ini jauh lebih mudah bagi pelayan untuk menulis singkatan yang jelas mengidentifikasi hidangan.
Misalnya, diberikan daftar ini:
beef burger
chicken burger
chicken nuggets
Singkatan c n
cocok chicken nuggets
.
Singkatan bur
cocok beef burger
dan chicken burger
.
Tulis program fungsi yang mengidentifikasi satu atau lebih item yang cocok dengan singkatan.
Memasukkan
- String yang disingkat untuk ditemukan.
- Daftar item untuk dicari.
Anda dapat mengubah pesanan ini dan menggunakan tipe data yang cocok.
Keluaran
- Jika singkatan tidak cocok dengan item apa pun:
Not found
- Jika singkatannya jelas cocok dengan item: output item yang tidak disatukan.
- Jika singkatan secara ambigu cocok dengan beberapa item: tampilkan daftar kata-kata yang dipisahkan koma yang akan membuat pemilihan menjadi tidak ambigu, diikuti oleh tanda tanya. Urutannya tidak penting. Ruang ekstra diizinkan.
Aturan yang cocok
Setiap kata dalam singkatan dan item dianggap secara terpisah. Jika kata yang disingkat cocok dengan awal kata item, item tersebut kemungkinan cocok. Jika tidak ada kata-kata item yang dimulai dengan kata-kata disingkat, item itu tidak cocok.
Kata-kata yang disingkat bisa dalam urutan apa pun.
Kata yang disingkat tidak dapat digunakan untuk mencocokkan beberapa kata item dan sebaliknya.
Singkatan hanya cocok dengan awal kata-kata.
Asumsikan tidak ada item yang akan mengandung semua kata-kata item lain. Misalnya, Anda tidak akan pernah beef burger
dan beef cheese burger
.
Uji Kasus
Diberikan daftar ini:
beef burger
crispy chicken burger
grilled chicken burger
chicken nuggets
chocolate cone
strawberry cone
vanilla cone
Singkatan ini memberikan output yang ditentukan:
fish Not found
cones Not found
chicken cone Not found
nilla Not found
v vanilla cone
be beef burger
c n chicken nuggets
b b beef burger
c b c crispy chicken burger
c b crispy,grilled?
bu beef,crispy,grilled?
or beef,crispy chicken,grilled chicken?
ch crispy,grilled,nuggets,cone?
or crispy chicken,grilled chicken,nuggets,cone?
Mencetak gol
Ini golf kode. Jawaban terpendek dalam byte dalam 12 hari memenangkan penerimaan. (Aku akan membuatnya satu minggu, tapi aku tidak akan ada untuk itu.)
v
cocokvanilla cone
.c b
akan cocokcrispy chicken burger
bukan ambigu. Ketika saya mengatakan "kata" yang saya maksud adalah serangkaian karakter yang dibatasi oleh spasi, demikiang c b
juga tiga kata.crispy,grilled,nuggets,chocolate
apakah valid untukch
test case? Dengan interpretasi kedua,chicken,grilled
harus valid untukc b
test case. Apa yang saya lewatkan?b b
beef burger
battered bacon
apa yang akan menjadi output yang dapat diterima?Jawaban:
Python 2 - 181 byte
Itu mengubah string yang disingkat menjadi regex dan mencoba untuk mencocokkan grup dari daftar pencarian.
Operasi ternary
if
danelse
s adalah 14 byte. Saya sudah mencoba memotongnya menjadi daftar dan kemudian mengakses salah satu item berdasarkan keadaanr
, tetapi belum ada yang lebih pendek dari ini.Panggilan dengan
s(str, list)
:sumber