लेवेंसहाइट योर सोर्स


11

एक शब्द को दूसरे शब्द में बदलने के लिए लेवेंसहाइटिन दो स्ट्रिंग्स के बीच की दूरी को सम्मिलित करने, हटाने, या प्रतिस्थापन की न्यूनतम संभव संख्या है। इस स्थिति में, प्रत्येक प्रविष्टि, विलोपन और प्रतिस्थापन की लागत 1 है।

उदाहरण के लिए, के बीच की दूरी rollऔर rolling3 है, क्योंकि विलोपन की लागत 1, और हम 3 वर्णों को हटाने की जरूरत है। के बीच की दूरी tollऔर tall, 1 है, क्योंकि प्रतिस्थापन लागत 1।

मूल लेवेंशेटिन प्रश्न से चोरी

आपका काम एक इनपुट स्ट्रिंग और आपके स्रोत के बीच लेवेंसहाइट एडिट अंतर की गणना करना है। यह को टैग किया , इसलिए चीटिंग क्वाइंस (उदाहरण के लिए, आपके स्रोत कोड को पढ़ना) की अनुमति नहीं है ।

नियम

  • इनपुट नॉन-खाली होगा और एएससीआईआई से बना होगा, जब तक कि आपके स्रोत में नॉन-एएससीआईआई न हो, जिस स्थिति में इनपुट में यूनिकोड शामिल हो सकता है। बावजूद, लेवेंसहाइट दूरी को वर्णों में मापा जाएगा, बाइट्स में नहीं।

  • आउटपुट इनपुट और आपके स्रोत की न्यूनतम लेवेंसाइट एडिट दूरी है।

यह , इसलिए बाइट्स में सबसे कम उत्तर, जीतता है।



8
मैं स्कोर बनाने के सुझाव देने जा रहा था जब आप अपने प्रोग्राम को रन
— करोगे


@ETHproductions आपने ऐसा कैसे सोचा? o_o
— आउटगॉल्फ

रेटिना एक खाली कार्यक्रम के साथ इसे जीतने के करीब है ...
— लियो

जवाबों:



4

पायथन 2 , 278 258 बाइट्स

t=input();s,f='t=input();s,f=%r,lambda m,n:m or n if m*n<1else-~min(f(m-1,n),f(m,n-1),f(m-1,n-1)-((s%%s)[m-1]==t[n-1]));print f(len(s%%s),len(t))',lambda m,n:m or n if m*n<1else-~min(f(m-1,n),f(m,n-1),f(m-1,n-1)-((s%s)[m-1]==t[n-1]));print f(len(s%s),len(t))

इसे ऑनलाइन आज़माएं!

यह पायथन में सिर्फ सामान्य क्वीन है, इस उत्तर से लेवेन्सहाइट एल्गोरिथ्म के साथ मिलाया जाता है । ध्यान दें कि यह बहुत अधिक हो जाता है (श्री एक्सकोडर का धन्यवाद: पी) धीमा।


क्या यह काम करता है l(s%s,input())(निश्चित नहीं)?
— श्री एक्सकोडर

0

जावास्क्रिप्ट, 113 बाइट्स

यह एक वैध क्वीन है।

f=t=>[...t].map((v,j)=>x=x.map((w,k)=>q=k--?Math.min(q,w,x[k]-(v==u[k]))+1:j+1),x=[...[,...u=`f=${f}`].keys()])|q

f=t=>[...t].map((v,j)=>x=x.map((w,k)=>q=k--?Math.min(q,w,x[k]-(v==u[k]))+1:j+1),x=[...[,...u=`f=${f}`].keys()])|q

console.log(f('f=t=>[...t].map((v,j)=>x=x.map((w,k)=>q=k--?Math.min(q,w,x[k]-(v==u[k]))+1:j+1),x=[...[,...u=`f=${f}`].keys()])|q'));
console.log(f('%'));
console.log(f('12345'));

अन्य जवाब से आइडिया चोरी।


"यह एक वैध क्वीन है" - वास्तव में, मुझे यकीन नहीं है कि आपके द्वारा लिंक किए गए उस मेटा थ्रेड में कोई स्पष्ट सहमति नहीं है। और वास्तव में, कुछ वोटों से, "यह धोखा है" विकल्प वास्तव में जीत रहा है।
— 19 को पलटें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.