D * mn明白な打ち切りを書く


16

検閲は、インターウェブで使用される一般的なツールです。しかし、彼らはしばしば言葉を検閲しすぎており、したがって、呪いは読者にとって曖昧になっています。そして、時々彼らは十分に検閲しないので、言葉はまだ不快なままです。あなたの仕事はそれを修正することです。

あなたのタスク

2つのリストと1つの文字列を受け取るプログラム/関数/なんでも書きます。最初のリストは、次のようなあなたの言語のすべての単語の辞書になります["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*"

これはので、バイト単位の最短d * mnコードが勝ちです!

PS誰もがベルギーで参照をキャッチしましたか?; P


あなたの説明ではあなたが言う["hello", "goodbye", "belgium", "offensive"] ["belgium", "offensive"] "Goodbye offensive belgium" -> "Goodbye o******** b******"が、テストケースは["hello", "goodbye", "belgium", "offensive"] ["belgium", "offensive"] "Goodbye offensive belgium" -> "Goodbye offensive b******" テストケースが間違っています、正しいと言いますか?
ジェリージェレミア

@JerryJeremiahが修正されました。
マルティセン

5
「B * lgium」のような発言を芸術的なものに限定していただきありがとうございます。
-histocrat

2
@orlp私の質問は十分に明確ではないと思います。これらの検閲されたメッセージの「リーダー」は、検閲リストの存在を認識しません。彼らはただ主な辞書を知っています。
マルティセン

1
@Maltysen-Zaphod自身だけが、問題を説明するときでさえ、プレーンテキストでb ******のような単語を使用するのに十分なほど勇敢です。びっくりしました。あなたは間違いなくフーピー詐欺師ではありません!
アルキミスト

回答:


1

JavaScript ES7、194バイト

(d,c,s,g=(a,b)=>[...b].reduce((z,l,i)=>z+(a[i]==l?1:0),0))=>[for(s of s.split` `)~d.indexOf(s)?[...c[(x=[for(i of c)g(i,s)]).indexOf(Math.max(...x))]].map((l,i)=>l!=s[i]?`*`:l).join``:s].join` `

非常に大きな機能。数バイトはゴルフで落とせると思いますが、動作方法を完全に変更しない限り、それほど多くはありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.