Цензоры являются распространенным инструментом, используемым в сетях. Но они часто подвергают цензуре слишком много слова и таким образом делают проклятие неоднозначным для читателя. И иногда они недостаточно цензурируют, поэтому слова по-прежнему остаются оскорбительными. Ваша задача это исправить.
Твое задание
Напишите программу / функцию / все, что занимает два списка и строку. Первый список будет словарь всех слов на вашем языке , как: ["hello", "goodbye", "belgium", "offensive", "jumping", "hypercool"]
. Следующим будет подмножество первого списка, содержащего все оскорбительные слова в языке:["belgium", "offensive"]
. Слова в этих списках гарантированно содержат только строчные буквы алфавита.
Строка - это фраза, которую вы должны подвергнуть цензуре. Он будет состоять из слов из словаря, разделенных пробелами:"Goodbye offensive belgium"
Возвращаемое значение будет той цензурой. Тем не менее, вы должны подвергнуть цензуре определенным образом. В частности, для каждого слова в оскорбительном списке вы должны подвергать цензуре как можно больше букв, оставаясь полностью однозначным в основном словаре. Так вот, это было бы:Goodbye o******** b******
.
Разъяснения
- Ваш код должен интерпретировать слова без учета регистра, но возвращаться с начальной заглавной буквой.
- Если существует несколько оптимальных ответов, выберите любой из них.
- Если однозначная цензура невозможна, подвергните цензуре одну букву, которая имеет наименьшее количество других возможных интерпретаций (если множественные возможны, опять же, ваш выбор).
Тестовые случаи
["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*"
Это код-гольф, поэтому выигрывает самый короткий код в байтах!
PS Кто-нибудь поймал ссылку с Бельгией? ;П
источник
["hello", "goodbye", "belgium", "offensive"] ["belgium", "offensive"] "Goodbye offensive belgium" -> "Goodbye o******** b******"
но контрольные примеры говорят, что["hello", "goodbye", "belgium", "offensive"] ["belgium", "offensive"] "Goodbye offensive belgium" -> "Goodbye offensive b******"
контрольный пример неправильный, правильно?Ответы:
JavaScript ES7, 194 байта
Очень большая функция. Я предполагаю, что несколько байтов могут быть проиграны, но не намного, если я полностью не изменю способ, которым это работает.
источник