Los censores son una herramienta común utilizada en las interwebs. Pero a menudo censuran demasiado la palabra y, por lo tanto, hacen que la maldición sea ambigua para el lector. Y a veces no censuran lo suficiente, por lo que las palabras siguen siendo ofensivas. Tu tarea es arreglar eso.
Tu tarea
Escriba un programa / función / lo que sea que requiera dos listas y una cadena. La primera lista será el diccionario de todas las palabras en su idioma como: ["hello", "goodbye", "belgium", "offensive", "jumping", "hypercool"]
. El próximo se subconjunto de la primera lista que contiene todas las ofensivas palabras en la lengua: ["belgium", "offensive"]
. Se garantiza que las palabras en estas listas contienen solo letras minúsculas del alfabeto.
La cadena es la frase que tendrás que censurar. Estará compuesto por palabras del diccionario, separadas por espacios:"Goodbye offensive belgium"
El valor de retorno será esa frase censurada. Sin embargo, tienes que censurar de cierta manera. Específicamente, para cada palabra en la lista ofensiva, debe censurar tantas letras como sea posible mientras permanece completamente inequívoco en el diccionario principal. Así que aquí sería: Goodbye o******** b******
.
Aclaraciones
- Su código tiene que interpretar las palabras sin distinción entre mayúsculas y minúsculas, pero regresa con las mayúsculas iniciales.
- Si hay múltiples respuestas óptimas, elija cualquiera de ellas.
- Si la censura inequívoca es imposible, censure una sola letra que tenga el menor número posible de otras interpretaciones posibles (si es posible múltiples, nuevamente, es su elección).
Casos de prueba
["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*"
Este es el código de golf, ¡el código d * mn más corto en bytes gana!
PD: ¿Alguien captó la referencia con Bélgica? ;PAG
fuente
["hello", "goodbye", "belgium", "offensive"] ["belgium", "offensive"] "Goodbye offensive belgium" -> "Goodbye o******** b******"
pero los casos de prueba dicen:["hello", "goodbye", "belgium", "offensive"] ["belgium", "offensive"] "Goodbye offensive belgium" -> "Goodbye offensive b******"
El caso de prueba está mal, ¿correcto?Respuestas:
JavaScript ES7, 194 bytes
Una función muy grande. Supongo que algunos bytes se pueden eliminar pero no mucho a menos que cambie por completo la forma en que funciona.
fuente