Untuk tantangan ini, Anda harus mengimplementasikan Abbrev
modul Ruby dalam kode sesedikit mungkin.
Tantangan
Input akan berupa apa pun bahasa Anda sebagai array (array, daftar, urutan, dll.) Dari string. Anda dapat menulis suatu fungsi, atau Anda dapat menerima kata-kata yang dipisahkan koma di STDIN.
Anda kemudian harus menghitung set awalan yang tidak ambigu untuk string tersebut. Ini berarti Anda harus mengembalikan hash (atau peta, objek, dll.) Singkatan ke string aslinya.
"Awalan" adalah substring dari string asli yang dimulai pada awal string. Misalnya, "pref" adalah awalan dari kata "prefix."
Sebuah ambigu prefix adalah salah satu yang hanya bisa berarti satu kata. Misalnya, jika input Anda adalah
car,cat
, makaca
bukan awalan yang tidak ambigu karena bisa berarti "mobil" atau "kucing."Pengecualian untuk aturan ini adalah bahwa kata selalu merupakan awalan dari dirinya sendiri. Misalnya, jika Anda memiliki input seperti
car,carpet
,car:car
harus di output Anda.
Anda kemudian dapat mengembalikan hash / map / object / etc. dari fungsi Anda (atau lakukan yang setara dalam bahasa Anda), atau cetak untuk STDOUT
key:value
berpasangan dalam bentukf:foo,fo:foo,...
. (Pasangan nilai kunci juga dapat dipisahkan oleh spasi putih jika membuat kode Anda lebih pendek.)
Uji kasus
Input code,golf,going
Output c:code,co:code,cod:code,code:code,gol:golf,golf:golf,goi:going,goin:going,going:going
Input pie
Output p:pie,pi:pie,pie:pie
Input pie,pier,pierre
Output pie:pie,pier:pier,pierr:pierre,pierre:pierre
Input a,dog
Output a:a,d:dog,do:dog,dog:dog
Aturan
Input tidak akan mengandung elemen duplikat.
Output Anda mungkin dalam urutan apa pun; Anda tidak perlu mengatasinya.
Anda tidak boleh menggunakan
Abbrev
modul / fungsi / hal bawaan seperti Ruby.Ini adalah kode-golf , jadi kode terpendek dalam byte akan menang!
key:value\nkey:value\nkey:value
...?