Sensor adalah alat yang umum digunakan pada jalinan. Tetapi mereka sering menyensor terlalu banyak kata, dan dengan demikian membuat kutukan menjadi ambigu bagi pembaca. Dan kadang-kadang mereka tidak cukup menyensor, jadi kata-katanya masih menyinggung. Tugas Anda adalah memperbaikinya.
Tugas Anda
Tulis program / fungsi / apa pun yang membutuhkan dua daftar dan sebuah string. Daftar pertama akan menjadi kamus semua kata dalam bahasa Anda seperti: ["hello", "goodbye", "belgium", "offensive", "jumping", "hypercool"]
. Selanjutnya akan subset dari daftar pertama yang berisi semua ofensif kata-kata dalam bahasa: ["belgium", "offensive"]
. Kata-kata dalam daftar ini dijamin hanya berisi huruf kecil alfabet.
String adalah frasa yang harus Anda sensor. Ini akan dibuat dari kata-kata dari kamus, dipisahkan oleh spasi:"Goodbye offensive belgium"
Nilai pengembalian akan menjadi frasa yang disensor. Namun, Anda harus menyensor dengan cara tertentu. Khususnya, untuk setiap kata dalam daftar ofensif, Anda harus menyensor sebanyak mungkin huruf sambil tetap sama sekali tidak ambigu dalam kamus utama. Jadi di sini itu akan menjadi: Goodbye o******** b******
.
Klarifikasi
- Kode Anda harus menafsirkan kata-kata case-insensitive, tetapi kembali dengan huruf kapital awal.
- Jika ada beberapa jawaban optimal, pilih salah satu dari mereka.
- Jika penyensoran yang tidak ambigu tidak mungkin dilakukan, lakukan penyensoran satu huruf yang memiliki jumlah interpretasi yang paling sedikit (Jika banyak yang dimungkinkan, sekali lagi, pilih sendiri).
Uji Kasus
["hello", "goodbye", "belgium", "offensive", "jumping", "hypercool"] ["belgium", "offensive"] "Goodbye offensive belgium" -> "Goodbye o******** b******"
["word"] ["word"] "word" -> "****"
["hot", "hat", "bat", "had"] ["hat"] "hat" -> "*at" or "h*t" or "ha*"
https://gist.github.com/deekayen/4148741 ["quart"] "I am a quart" -> "I am a q**r*"
Ini adalah kode-golf sehingga kode d * mn terpendek dalam byte menang!
PS Adakah yang menangkap referensi dengan Belgia? ; P
sumber
["hello", "goodbye", "belgium", "offensive"] ["belgium", "offensive"] "Goodbye offensive belgium" -> "Goodbye o******** b******"
tetapi test case mengatakan["hello", "goodbye", "belgium", "offensive"] ["belgium", "offensive"] "Goodbye offensive belgium" -> "Goodbye offensive b******"
Test case salah, benar?Jawaban:
JavaScript ES7, 194 byte
Fungsi yang sangat besar. Saya kira beberapa byte dapat diputuskan tetapi tidak banyak kecuali saya benar-benar mengubah cara kerjanya.
sumber