Les censeurs sont un outil commun utilisé sur les interwebs. Mais ils censurent trop souvent le mot et rendent ainsi la malédiction ambiguë pour le lecteur. Et parfois, ils ne censurent pas suffisamment, alors les mots restent choquants. Votre tâche consiste à résoudre ce problème.
Ta tâche
Écrivez un programme / une fonction / tout ce qui prend deux listes et une chaîne. La première liste sera le dictionnaire de tous les mots dans votre langue comme: ["hello", "goodbye", "belgium", "offensive", "jumping", "hypercool"]
. Le prochain sera sous - ensemble de la première liste contenant toutes les offensives des mots dans la langue: ["belgium", "offensive"]
. Les mots de ces listes sont garantis pour ne contenir que des lettres minuscules de l'alphabet.
La chaîne est la phrase que vous devrez censurer. Il sera composé de mots du dictionnaire, séparés par des espaces:"Goodbye offensive belgium"
La valeur de retour sera cette phrase censurée. Cependant, vous devez censurer d'une certaine manière. Plus précisément, pour chaque mot de la liste offensive, vous devez censurer autant de lettres que possible tout en restant complètement sans ambiguïté dans le dictionnaire principal. Voici donc ce serait: Goodbye o******** b******
.
Clarifications
- Votre code doit interpréter les mots sans tenir compte de la casse, mais revenir avec la capitalisation initiale.
- S'il y a plusieurs réponses optimales, choisissez l'une d'entre elles.
- Si la censure sans ambiguïté est impossible, censurez une seule lettre contenant le moins d'interprétations possibles (si plusieurs sont possibles, encore une fois, c'est votre choix).
Cas de 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*"
C'est le code-golf donc le code d * mn le plus court en octets gagne!
PS Quelqu'un a attrapé la référence avec la Belgique? ; P
la source
["hello", "goodbye", "belgium", "offensive"] ["belgium", "offensive"] "Goodbye offensive belgium" -> "Goodbye o******** b******"
mais les cas de test disent["hello", "goodbye", "belgium", "offensive"] ["belgium", "offensive"] "Goodbye offensive belgium" -> "Goodbye offensive b******"
Le cas de test est faux, n'est-ce pas?Réponses:
JavaScript ES7, 194 octets
Une très grande fonction. Je suppose que quelques octets peuvent être joués, mais pas beaucoup à moins que je change complètement la façon dont cela fonctionne.
la source