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 कोड बाइट्स में जीतता है!

पुनश्च किसी ने बेलगियम के साथ संदर्भ पकड़ा? ; 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******" परीक्षण का मामला गलत है, सही है?
जेरी जेरेमिया

@ जेरेमीरमैया तय
माल्टसेन

5
मैं आपको "B * lgium" जैसी टिप्पणी को कुछ कलात्मक तक सीमित करने के लिए धन्यवाद देता हूं।
हिस्टोक्रैट

2
@orlp मुझे लगता है कि मेरा सवाल पर्याप्त स्पष्ट नहीं है। इन सेंसर संदेशों के "रीडर" को सेंसर सूचियों की उपस्थिति के बारे में पता नहीं है। वे सिर्फ मुख्य तानाशाह को जानते हैं।
माल्टीसेन

1
@ मैल्टेनसेन - केवल ज़ापद स्वयं ही इस मुद्दे का स्पष्टीकरण करते हुए भी सादे पाठ में b ****** जैसे शब्द का उपयोग करने के लिए पर्याप्त रूप से तैयार होंगे। मैं हैरान हूँ। आप निश्चित रूप से एक घेरा मेंढक नहीं हैं!
अल्काइमर

जवाबों:


1

जावास्क्रिप्ट ईएस 7, 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` `

एक बहुत बड़ा समारोह। मुझे लगता है कि कुछ बाइट्स को बंद किया जा सकता है, लेकिन बहुत ज्यादा नहीं जब तक कि मैं पूरी तरह से इसके काम करने के तरीके को नहीं बदल देता।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.