I censori sono uno strumento comune utilizzato negli interwebs. Ma spesso censurano troppo la parola, e quindi rendono la maledizione ambigua al lettore. E a volte non censurano abbastanza, quindi le parole rimangono ancora offensive. Il tuo compito è risolverlo.
Il tuo compito
Scrivi un programma / funzione / qualunque cosa richieda due liste e una stringa. Il primo elenco sarà il dizionario di tutte le parole nella tua lingua come: ["hello", "goodbye", "belgium", "offensive", "jumping", "hypercool"]
. Il prossimo sarà sottoinsieme del primo elenco contenente tutte le offensive parole nella lingua: ["belgium", "offensive"]
. Le parole in questi elenchi sono garantite per contenere solo lettere minuscole dell'alfabeto.
La stringa è la frase che dovrai censurare. Sarà composto da parole del dizionario, separate da spazi:"Goodbye offensive belgium"
Il valore restituito sarà quella frase censurata. Tuttavia, devi censurare in un certo modo. In particolare, per ogni parola nella lista offensiva, devi censurare quante più lettere possibile rimanendo completamente inequivocabile nel dizionario principale. Così qui sarebbe: Goodbye o******** b******
.
chiarimenti
- Il codice deve interpretare le parole senza distinzione tra maiuscole e minuscole, ma restituire con la maiuscola iniziale.
- Se ci sono più risposte ottimali, scegline una qualsiasi.
- Se la censura inequivocabile è impossibile, censurare una singola lettera che ha il minor numero di altre interpretazioni possibili (se sono possibili più multipli, di nuovo, è una tua scelta).
Casi test
["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*"
Questo è code-golf quindi vince il codice d * mn più breve in byte!
PS Qualcuno ha colto il riferimento con il Belgio? ; P
["hello", "goodbye", "belgium", "offensive"] ["belgium", "offensive"] "Goodbye offensive belgium" -> "Goodbye o******** b******"
ma i casi di test dicono["hello", "goodbye", "belgium", "offensive"] ["belgium", "offensive"] "Goodbye offensive belgium" -> "Goodbye offensive b******"
Il caso di test è sbagliato, giusto?