Zensoren sind ein verbreitetes Werkzeug, das in den Interwebs verwendet wird. Aber sie zensieren oft zu viel des Wortes und machen so den Fluch für den Leser mehrdeutig. Und manchmal zensieren sie nicht genug, sodass die Worte immer noch beleidigend sind. Ihre Aufgabe ist es, das zu beheben.
Deine Aufgabe
Schreiben Sie ein Programm / eine Funktion / was auch immer, das zwei Listen und eine Zeichenfolge benötigt. Die erste Liste wird das Wörterbuch aller Wörter in Ihrer Sprache wie: ["hello", "goodbye", "belgium", "offensive", "jumping", "hypercool"]
. Der nächste wird von der ersten Liste Subset werden alle der enthält Offensive Wörter in der Sprache: ["belgium", "offensive"]
. Die Wörter in diesen Listen enthalten garantiert nur Kleinbuchstaben des Alphabets.
Die Zeichenfolge ist die Phrase, die Sie zensieren müssen. Es besteht aus Wörtern aus dem Wörterbuch, die durch Leerzeichen getrennt sind:"Goodbye offensive belgium"
Der Rückgabewert ist die zensierte Phrase. Sie müssen jedoch in gewisser Weise zensieren. Insbesondere müssen Sie für jedes Wort in der beleidigenden Liste so viele Buchstaben wie möglich zensieren, während Sie im Hauptwörterbuch völlig eindeutig bleiben. So , hier wäre es: Goodbye o******** b******
.
Klarstellungen
- Ihr Code muss die Wörter unabhängig von Groß- und Kleinschreibung interpretieren, aber mit der anfänglichen Groß- und Kleinschreibung zurückgeben.
- Wenn es mehrere optimale Antworten gibt, wählen Sie eine aus.
- Wenn eine eindeutige Zensur nicht möglich ist, zensieren Sie einen einzelnen Buchstaben, der die geringste Anzahl anderer möglicher Interpretationen aufweist (falls mehrere möglich sind, ist dies wiederum Ihre Wahl).
Testfälle
["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*"
Dies ist Code-Golf, also gewinnt der kürzeste D * MN-Code in Bytes!
PS Hat jemand die Referenz mit Belgien erwischt? ; P
quelle
["hello", "goodbye", "belgium", "offensive"] ["belgium", "offensive"] "Goodbye offensive belgium" -> "Goodbye o******** b******"
aber die Testfälle sagen,["hello", "goodbye", "belgium", "offensive"] ["belgium", "offensive"] "Goodbye offensive belgium" -> "Goodbye offensive b******"
der Testfall ist falsch, richtig?Antworten:
JavaScript ES7, 194 Bytes
Eine sehr große Funktion. Ich vermute, dass ein paar Bytes entfernt werden können, aber nicht viel, wenn ich nicht die Art und Weise, wie es funktioniert, komplett ändere.
quelle