आपके चाचा को नशे की जरूरत है


10

ड्रंक अंकल (सॉरी एमई एंड एयूएस फॉर रीजन लॉक) शनिवार रात लाइव से एक काल्पनिक चरित्र है। वह अक्सर दूसरों के लिए शब्दों को भ्रमित करता है जो उनकी तरह लगते हैं। इस चुनौती के लिए आपको सामान्य भाषण को ड्रंकस्पीक में बदलना होगा।

कलन विधि

ड्रंकपेक में अनुवाद करने के लिए पाठ में शब्दों के क्रम को बदलना आवश्यक है। स्वैपिंग दो शब्दों की शराबी समानता पर आधारित है । नशे की समानता को उन अक्षरों की संख्या के रूप में परिभाषित किया जाता है जो दो शब्दों को एक ही सूचकांक में प्रस्तुत करते हैं । हालांकि, दो समान शब्दों में एक शराबी समानता -1 है । उदाहरण के लिए, treeऔर friend2 की एक शराबी समानता है, क्योंकि वे दोनों सूचकांक 1 पर एक 'आर', और सूचकांक 3 पर एक 'ई' है।

आपको बस इतना करना है कि पाठ में दो शब्दों को सबसे अधिक नशे की समानता के साथ खोजें, फिर उन्हें स्वैप करें। एक बार जब आप दो शब्दों की अदला-बदली कर लेते हैं, तो वे और नहीं चलते हैं। फिर आप शेष स्वैच्छिक शब्दों को देखते हैं और उन दो को स्वैप करते हैं जिनमें सबसे अधिक नशे की समानता है। आप इसे तब तक करते रहेंगे जब तक आप कोई और स्वैप नहीं कर सकते। फिर आप अपडेट किए गए टेक्स्ट को आउटपुट (या किसी फ़ंक्शन के लिए) लौटाते हैं।

विशिष्ट तथ्य

  • सादगी के लिए, इनपुट उन शब्दों की एक सूची है जिसमें [A-Za-z] अक्षर होते हैं
  • हर इनपुट में कम से कम एक शब्द होता है
  • पत्र मिलान केस-असंवेदनशील है: के Aसाथ मेल खाता है a( नोट: इस नियम के कारण Dogऔर dogसमान हैं, और इस प्रकार -1 का DS है)
  • यदि कई जोड़े में सबसे अधिक नशे की समानता है:
    1. शब्दों में से, जो नशे की समानता को अधिकतम कर सकता है, सूची में सबसे कम सूचकांक के साथ एक को चुनें
    2. उस शब्द को सबसे कम-इंडेक्स शब्द के साथ जोड़ दें जो नशे की समानता को अधिकतम करता है

उदाहरण

  1. Drunk Uncle needs your help (शीर्षक)

    • एस 1 : नशे <=> अपने (डीएस: 1)your Uncle needs Drunk help
    • एस 2 : जरूरतों <=> मदद (डीएस: 1)your Uncle help Drunk needs
    • आउटपुट: your Uncle help Drunk needs
  2. I love fidget spinners (उबाऊ उदाहरण)

    • S 1 : I <=> प्यार (DS: 0)love I fidget spinners
    • S 2 : fidget <=> स्पिनर (DS: 0)love I spinners fidget
  3. dog eat dog ear

    • एस 1 : खाओ <=> कान (डीएस: 2)dog ear dog eat
    • एस 2 : डॉग <=> डॉग (डीएस: -1) dog ear dog eat(यह कदम सिर्फ औपचारिकता है)
  4. Let me tell you a story

    • S 1 : Let <=> me (DS: 1)me Let tell you a story
    • एस 2 : बताओ <=> आप (डीएस: 0)me Let you tell a story
    • एस 3 : एक <=> कहानी (डीएस: 0)me Let you tell story a
  5. Too many money and purple people

    • एस 1 : बैंगनी <=> लोग (डीएस: 4)Too many money and people purple
    • एस 2 : कई <=> पैसा (डीएस: 2)Too money many and people purple
    • एस 3 : टू <=> और (डीएस: 0)and money many Too people purple

मुझे बताएं कि क्या और भी उदाहरण हैं जो आप मुझे कवर करना चाहते हैं।


8
कृपया 'i love fid-get
spinners

1
"प्राकृतिक भाषा"
हाइपरनेत्रिनो

जवाबों:


3

जावास्क्रिप्ट - 286 279 बाइट्स

f=(a,n=(a=a.split` `).length)=>{for(d=n>>1;w=-2,d--;){for(i=n;i--;)for(j=n;j--;)s=((a,f,v=0)=>{for(u=s=a!=f;(r=a[v])&&(t=f[v++]);s+=(p=a=>a.toLowerCase())(r)==p(t));return u*s-1})(a[i],a[j]),!(f[i]|f[j])&&s>=w&&(w=s,x=i,y=j);f[x]=f[y]=1,[a[x],a[y]]=[a[y],a[x]];}return a.join` `}

आप इसे JSFiddle पर आज़मा सकते हैं


PPCG में आपका स्वागत है (फिर से) :) अच्छा पहला सबमिशन!
हाइपरएन्यूट्रीनो

2

पायथन 3, 285 277 270 267 बाइट्स, काम नहीं कर रहे हैं

i=input().split();r=range;l=len;t=y=z=-1;n=str.lower
for p in r(l(i)):
 for q in r(p):
  b=min(l(i[p]),l(i[q]));x=0
  for s in r(b):
   if n(i[p][s])==n(i[q][s]):
    x=x+1
  if n(i[p])==n(i[q]):
   x=-1
  if x>t:
   t=x;y=p;z=q
i[y],i[z]=i[z],i[y]
print(" ".join(i))

मैंने कोशिश की कि आउटपुट मैच को चुनौती दे, न कि परीक्षण के मामलों को, जैसा कि परीक्षण मामलों के एक जोड़े ने चुनौती का खंडन किया है।

संपादित करें: 'निचले' चीज़ को गला दिया।

संपादित करें: विभाजित विभाजन ("") को विभाजित करने के लिए ()

संपादित करें: मुझे एहसास हुआ कि यह वास्तव में सभी चीज़ों को पूरा नहीं करता है, और जबकि मैं एक पूर्ण काम के जवाब के साथ आ सकता हूं, इस बीच मैं यह भी जोड़ सकता हूं कि यह केवल एक पुनरावृत्ति को पूरा करता है।


1
आपको g = str.lowerया तो परिभाषित करने की आवश्यकता है या g = lambda s: s.lower()फिर आप इस तरह का उपयोग कर सकते हैं ।
ბიმო

@ ब्रूस फोर्ट धन्यवाद! इससे 8 बाइट्स से छुटकारा मिला। (यह केवल 270 तक कम हो गया, क्योंकि मुझे इसे बनाने के लिए एक चीज़ भी ठीक करनी पड़ी, ताकि यह शब्दों की अदला-बदली कर सके, भले ही उच्चतम समानता 0 थी; इसने एक बाइट जोड़ा)।
हानिरहित

1
कोई समस्या नहीं है और PPCG में आपका स्वागत है! यदि आपने पहले से नहीं देखा है, तो इस तरह के पोस्ट बहुत मददगार हैं। Btw .split(' ')द्वारा प्रतिस्थापित किया जा सकता है .split()
ბიმო

रुको, आपने कौन से परीक्षण के मामले बदले, और उनके साथ क्या गलत था?
geokavel

मेरे पास पोस्ट बदलने के लिए पर्याप्त प्रतिनिधि नहीं है, लेकिन स्पष्ट विरोधाभास पहले उदाहरण के लिए था - 'नशे में चाचा को आपकी मदद की जरूरत है' के लिए दिया गया जवाब था 'आपके चाचा को नशे की जरूरत है' आपके चाचा को नशे में मदद की जरूरत है। इन दोनों जवाबों ने समान समानता वाले स्कोर के साथ शब्दों की अदला-बदली की, और वे दोनों जोड़ी के पहले का उपयोग करके आपके दिए गए टाई-ब्रेकर का पालन करते हैं, यह तय करने के लिए कि कौन सा स्वैप करना है, इस अर्थ में कि वे दोनों पहले शब्द से शुरू करते हैं। (मुझे अब एहसास हुआ कि मैं यह लिखता हूं कि विरोधाभास वास्तव में ऐसा नहीं है, लेकिन अधिक अस्पष्टता है)। तय करने का तरीका दिया गया है- चार से भागते हुए अगले देखें-
हानिरहित
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.