Os censores são uma ferramenta comum usada nas interwebs. Mas eles frequentemente censuram muito a palavra e, assim, tornam a maldição ambígua para o leitor. E às vezes eles não censuram o suficiente, então as palavras ainda permanecem ofensivas. Sua tarefa é consertar isso.
Sua tarefa
Escreva um programa / função / o que tiver duas listas e uma string. A primeira lista será o dicionário de todas as palavras em sua língua como: ["hello", "goodbye", "belgium", "offensive", "jumping", "hypercool"]
. A próxima será subconjunto da primeira lista contendo todas as ofensivas palavras na língua: ["belgium", "offensive"]
. As palavras nestas listas são garantidas para conter apenas letras minúsculas do alfabeto.
A string é a frase que você terá que censurar. Será composto de palavras do dicionário, separadas por espaços:"Goodbye offensive belgium"
O valor de retorno será a frase censurada. No entanto, você precisa censurar de uma certa maneira. Especificamente, para cada palavra da lista ofensiva, você deve censurar o máximo de letras possível, permanecendo completamente inequívoco no dicionário principal. Então aqui seria: Goodbye o******** b******
.
Esclarecimentos
- Seu código deve interpretar as palavras sem distinção entre maiúsculas e minúsculas, mas retornar com a capitalização inicial.
- Se houver várias respostas ótimas, escolha uma delas.
- Se a censura inequívoca for impossível, censure uma única letra que tenha o menor número de outras interpretações possíveis (se várias forem possíveis, novamente, a escolha é sua).
Casos de teste
["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 é o code-golf, pelo que o menor código d * mn em bytes vence!
PS Alguém pegou a referência com a Bélgica? ; P
fonte
["hello", "goodbye", "belgium", "offensive"] ["belgium", "offensive"] "Goodbye offensive belgium" -> "Goodbye o******** b******"
mas os casos de teste dizem["hello", "goodbye", "belgium", "offensive"] ["belgium", "offensive"] "Goodbye offensive belgium" -> "Goodbye offensive b******"
O caso de teste está errado, correto?Respostas:
JavaScript ES7, 194 bytes
Uma função muito grande. Eu estou supondo que alguns bytes podem ser eliminados, mas não muito, a menos que eu mude completamente a maneira como funciona.
fonte