D * mn 모호한 검열을 작성하십시오


16

검열은 웹 간에서 사용되는 일반적인 도구입니다. 그러나 그들은 종종 너무 많은 단어를 검열하여 저주를 독자에게 모호하게 만듭니다. 그리고 때때로 그들은 충분히 검열하지 않기 때문에 단어는 여전히 불쾌합니다. 당신의 임무는 그것을 해결하는 것입니다.

당신의 작업

두 개의 목록과 문자열을 취하는 프로그램 / 기능 / 무엇을 작성하십시오. 첫 번째 목록은 다음과 같은 언어로 된 모든 단어의 사전입니다 ["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 코드가 바이트로 표시됩니다!

추신 누구든지 벨기에와 함께 언급을 했습니까? ;피


귀하의 설명에서 귀하는 말합니다. ["hello", "goodbye", "belgium", "offensive"] ["belgium", "offensive"] "Goodbye offensive belgium" -> "Goodbye o******** b******"그러나 테스트 사례는 말합니다 ["hello", "goodbye", "belgium", "offensive"] ["belgium", "offensive"] "Goodbye offensive belgium" -> "Goodbye offensive b******" . 테스트 사례가 맞습니까?
Jerry Jeremiah

@JerryJeremiah가 수정되었습니다.
Maltysen

5
"B * lgium"과 같은 말을 예술적인 것으로 제한 해 주셔서 감사합니다.
histocrat

2
@orlp 내 질문이 충분하지 않은 것 같습니다. 이 검열 된 메시지의 "독자"는 검열 목록의 존재를 인식하지 못합니다. 그들은 단지 주요한 법령을 알고 있습니다.
Maltysen

1
@ Maltysen-Zaphod 자신만이 문제를 설명 할 때조차도 b ******와 같은 단어를 일반 텍스트로 사용할 정도로 뻔뻔했습니다. 나는 충격을 받았다. 당신은 확실히 후프가 아닙니다!
Alchymist

답변:


1

자바 스크립트 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.