चुनौती के करीब कोड: स्थापना


15

यह इस चुनौती की अगली कड़ी है: कोड चुनौती के करीब: पूर्णांक का योग

इसमें एक चुनौती थोड़ी कठिन है, और एक शांत शीर्षक के लिए भी है (यही वजह है कि मैंने इसे चुना):

दो तारों के बीच लेवेंसहाइट दूरी की गणना करें

पिछली चुनौती की तरह, इस चुनौती में आपका स्कोर आपके कोड और उपरोक्त उद्धरण के बीच लेवेंसहाइट दूरी है।

तो अब विवरण के लिए!

आपका कार्यक्रम 2 इनपुट लेगा, दोनों बिना किसी अनुगामी रिक्त स्थान या न्यूलाइन्स के, और दोनों के बीच लेवेंसहाइट दूरी का उत्पादन करेगा। लेवेन्शिएन की दूरी को एक स्ट्रिंग को दूसरे में बदलने के लिए आवश्यक परिवर्धन, विलोपन और प्रतिस्थापन के रूप में परिभाषित किया गया है। इसकी गणना कैसे करें के बारे में अधिक जानकारी के लिए, ऊपर दिया गया विकिपीडिया पृष्ठ देखें। यह जांचने के लिए कि क्या आपका प्रोग्राम काम करता है, इस कैलकुलेटर का उपयोग करें । आपके कार्यक्रम में दो तार के बीच लेवेंसहाइट दूरी के अलावा कुछ भी नहीं होना चाहिए। यदि कुछ और उत्पादन किया जाता है तो यह अयोग्य हो जाएगा। उदाहरण I / O:

Inputs:
test
test2
Output:
1

Inputs:
222
515
Output:
3

Inputs:
Test
test
Output:
1

आपके कोड में नो-ऑप्स या टिप्पणियां नहीं हो सकती हैं।

जवाबों:


9

फ्रिंक , दूरी 24

Calculate[the,Levenshtein]:=editDistance[the,Levenshtein]

इसका उपयोग करने के लिए, आप दो स्ट्रिंग्स के साथ कैलकुलेट को कॉल करेंगे, और चूंकि यह वापस आ रहा है, इसलिए आपको कॉल को भी घेरना होगा print[]। यदि इसकी अनुमति नहीं है, तो मेरा स्कोर 30 है।

उदाहरण:

Calculate["kitten","spork"]        -> returns 6
print[Calculate["kitten","spork"]] -> prints 6.

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


अरे। अरे! यहाँ प्रतीकात्मक में एक लेवेंशिन कार्यान्वयन है, जिस पर मैं काम कर रहा हूं k=λ:Δ(ί,ί):।


3
दिलचस्प भाषा, मुझे गणितज्ञ की याद दिलाती है।
एलेक्स ए।

यह चुनौती को हल करने के लिए एक अंतर्निहित फ़ंक्शन का उपयोग करने के रूप में गिना जाता है, जिसे एक मानक कमियां माना जा सकता है (लेकिन इस चुनौती के सभी उत्तरों में से 90 to लगता है)
जॉन ड्वोरक

1
@JanDvorak बिल्ट-इन एक ग्रे एरिया की तरह है, क्योंकि मेटा लूप लिस्टिंग में वोट ब्रेकडाउन बिल्ट-इन एक मानक खामियों के रूप में आधा और आधा के पास होता है।
एलेक्स ए।

5

आर, दूरी 35

Calculate=function(the,Levenshtein)adist(between<-the,two<-Levenshtein)

यह Calculateमापदंडों के साथ एक फ़ंक्शन बनाता है theऔर Levenshtein। यह adistदूरी की गणना करने के लिए R बिल्ट-इन फ़ंक्शन का उपयोग करता है। स्ट्रिंग पैरामीटर adistअनिवार्य रूप से हैं theऔर Levenshteinइसका नाम बदलकर betweenऔर two


5

PHP4.1, दूरी 32 22 15 14

बहुत बुनियादी एक, कुछ भी रोमांचक नहीं है।

<?=$Calculate_the=Levenshtein($distance,$between_two_strings);

या एक छोटा संस्करण:

<?=$ulatethe=Levenshtein($istance,$etweentwostrin);

इस काम के लिए, आपको कुंजी के साथ एक POST / GET / COOKIE / सत्र चर भेजने / सेट करने की आवश्यकता है:

  • distance( istanceछोटे वाले के लिए)
  • between_two_strings( etweentwostrinछोटे वाले के लिए)

तर्क उस क्रम में हैं।

Http://ideone.com/QzNZ8T पर स्कोर का परीक्षण करें

उदाहरण:

http://localhost/distance.php?distance=string1&between_two_strings=string2

@AboveFire क्षमा करें, लेकिन मैं आपके संपादन को स्वीकार नहीं कर सकता। ओपी को उद्धृत करते हुए: "Your code may not have no-ops or comments."और आपके संपादन ने बस एक HTML टिप्पणी जोड़ी।
इस्माईल मिगुएल

2

PHP, दूरी 44

function Calculate($two,$strings){echo levenshtein($two,$strings);}

levenshteinPHP मानक लाइब्रेरी से अंतर्निहित फ़ंक्शन का उपयोग करें और दूरी को कम करने का प्रयास करने के लिए तर्कों का नाम दिया।


1
यह नहीं होना चाहिए $two,$strings?
इस्माइल मिगुएल

वास्तव में, यह होना चाहिए।
05 帰

1
इसके अलावा, आप ;
इस्माइल मिगुएल

मैं आपको 28 की दूरी के साथ एक समाधान प्रदान करता हूं:echo$Calculate_the=levenshtein($_GET[distance_between_two],$_GET[strings]);
इस्माईल मिगुएल

2

पिप, दूरी ५०

कोई बिलीन लेवेंसाइटिन फ़ंक्शन का उपयोग नहीं करता है!

xINg?#JgMN[1+(fac:b@>1)1+(fe:a@>1b)(a@0NEb@0)+(fec)]

यह कोड पुनरावर्ती Levenshtein एल्गोरिथ्म को लागू करता है ; जैसे कि, यह बहुत धीमा है, लंबाई के तार के लिए भी कुछ सेकंड लगते हैं। मैं इसे जांचने के लिए कार्यक्रम चलाने की सिफारिश नहीं करूंगा!

व्हॉट्सएप और टिप्पणियों के साथ यहां मेरा आधार कोड है:

; Note: a Pip program is an implicit function f, which is called with the command-line
; arguments. The args are stored in the list g, as well as being assigned to the local
; variables a-e.

; Is one of the args the empty string? (NB x is initialized to "")
x IN g ?
 ; If so, join args together and take the length (i.e., length of the non-empty string).
 # J g
 ; If not, take the min of the following:
 MN [
  ; Recursively call f with the first character of a removed; add 1 to the result
  (f a@>1 b) + 1
  ; Recursively call f with the first character of b removed; add 1 to the result
  (f a b@>1) + 1
  ; Recursively call f with the first characters of both removed; iff the two characters
  ; were not equal, add 1 to the result
  (f a@>1 b@>1) + (a@0 NE b@0)
 ]

अंतिम संस्करण में मुख्य परिवर्तन अस्थायी चर के लिए कुछ मान निर्दिष्ट कर रहा है cऔर e, जो चुनौती स्ट्रिंग में दिखाई देते हैं और इस तरह लेवेंसहाइट दूरी को थोड़ा कम करते हैं।

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