लेवेंसाइटिन दूरी पूर्वाग्रह


10

एक नाम के साथ एक भाषा में एक कार्यक्रम लिखें A, जिसे एक स्ट्रिंग दी जाती है S, एक अलग प्रोग्रामिंग भाषा का नाम आउटपुट करता है B। की लंबाई Bके बराबर होना चाहिए Levenshtein दूरी (abbr। "एलडी") के बीच Aऔर S। एक प्रोग्रामिंग भाषा मानी जाने के लिए, Bएक एसोलंग्स पेज या एक विकिपीडिया पेज होना चाहिए।

उदाहरण:

(Suppose the program is coded in Python)
Input: Jython
Output: R
Input: Pyt4oq
Output: Go
Input: Rs7hon
Output: C++

एलडी बीच है Pythonऔर Jythonएक है, इसलिए आउटपुटR

आपको केवल अप करने के लिए एलडी तक कवर करना होगा 12। आप मान सकते हैं कि एलडी ऑफ़ 0विल कभी नहीं होगा।

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

(यह मेरी पहली चुनौती है! प्रतिक्रिया की सराहना की है)


लीडरबोर्ड


क्यों 12? क्या बड़े नामों वाली भाषाएँ नहीं हैं?
कॉनर ओ'ब्रायन

@ C @O'Bʀɪᴇɴ यह सिर्फ एक तर्कपूर्ण ऊपरी शब्दांश लगता था।
Seadrus

@ThomasKwa मेरा मानना है कि Rएक प्रोग्रामिंग भाषा है ... यह आसानी से हो सकता था C, Dआदि
Seadrus

1
तो, आपका मतलब है कि लेवेंसहाइट दूरी के बराबर लंबाई वाला एक नाम ? प्रोग्रामिंग भाषा के रूप में क्या मायने रखता है? यह एक esolangs / विकिपीडिया पृष्ठ होना चाहिए?
lirtosiast

6
"पैटन" और "पायथन" का LD 2 है, न कि 3.
Leif Willerts

जवाबों:


3

ओ, 107 बाइट्स

दूरी की गणना को सरल बनाने के लिए @histocrat से टिप का उपयोग करना। कुछ अक्षरों को हटाने के लिए एक ही प्रारंभिक पत्र के साथ भाषाओं का भी उपयोग किया

"pyrodecimal""hakespeare""tackstack""nowflake""nowball""nowman""onata""ADOL""taq""oT""R"""ie\'O<-1-{;}d'Soo

इसे यहाँ आज़माएँ


6

PHP, 137 135

त्रुटि रिपोर्टिंग और PHP 5.4+ की आवश्यकता है। इनपुट GET वैरिएबल है a

<?=explode(~ß,~­ß¼Üß¼ÔÔßµž‰žß¬œž“žß¾Š‹¶‹ß¾‘“›¼ß«¶Ò½¾¬¶¼ß½Š“š˜Š’ßµž‰žŒœ–‹ß²ž‹—š’ž‹–œžß¾œ‹–‘¬œ–‹)[levenshtein(PHP,$_GET[a])-1];

Hexdump:

00000000: 3C 3F 3D 65 78 70 6C 6F - 64 65 28 7E DF 2C 7E AD |<?=explode(~ ,~ |
00000010: DF BC DC DF BC D4 D4 DF - B5 9E 89 9E DF AC 9C 9E |                |
00000020: 93 9E DF BE 8A 8B 90 B6 - 8B DF BE 8D 91 90 93 9B |                |
00000030: BC DF AB B6 D2 BD BE AC - B6 BC DF BD 8A 9D 9D 93 |                |
00000040: 9A 98 8A 92 DF B5 9E 89 - 9E 8C 9C 8D 96 8F 8B DF |                |
00000050: B2 9E 8B 97 9A 92 9E 8B - 96 9C 9E DF BE 9C 8B 96 |                |
00000060: 90 91 AC 9C 8D 96 8F 8B - 29 5B 6C 65 76 65 6E 73 |        )[levens|
00000070: 68 74 65 69 6E 28 50 48 - 50 2C 24 5F 47 45 54 5B |htein(PHP,$_GET[|
00000080: 61 5D 29 2D 31 5D 3B    -                         |a])-1];|
00000087;

पठनीय संस्करण:

<?=explode(' ','R C# C++ Java Scala AutoIt ArnoldC TI-BASIC Bubblegum Javascript Mathematica ActionScript')[levenshtein(PHP,$_GET[a])-1];

6

सी, 183

main(s){char* a[12]={"R","C#","C++","Java","COBOL","Python","Clipper","VBScript","Smalltalk","Javascript","Mathematica","ActionScript"};printf(a[strlen(gets(&s))-!!strchr(&s,67)-1]);}

एक वर्ण नाम के साथ एक भाषा चुनना आपको दूरी की गणना के साथ धोखा देता है: "C" से किसी भी स्ट्रिंग की दूरी स्ट्रिंग की लंबाई, शून्य से एक है यदि इसमें "C" शामिल है। मैं कल्पना करता हूं कि आर या जे उसी रणनीति का उपयोग करके इसे हरा सकते थे।


कैसे gets(&s)दुर्घटना नहीं आती है?
अनातोलीग सिप

मुझे यकीन नहीं है, यह अराजकता गोल्फ और आइडोन पर काम करता है लेकिन स्पष्ट रूप से वास्तव में क्रिकेट नहीं है। मुझे लगता है कि यह ARGV के लिए आवंटित अप्रयुक्त मेमोरी का उपयोग कर रहा है।
हिस्टोक्रेट

5

पर्ल 5, 325 276

लेवेंसहाइट दूरी की गणना करने के लिए थोड़ी सी पुनरावृत्ति का उपयोग करना।

@X=(P,e,r,l);$y=@Y=split//,pop;sub L{my($n,$m)=@_;return$m,if!$n;return$n,if!$m;my$c=$X[$n]eq$Y[$m]?0:1;(sort{$a<=>$b}(L($m-1,$n)+1,L($m,$n-1)+1,L($m-1,$n-1)+$c))[0]}print qw(C C# C++ Java COBOL Python Clipper VBScript Smalltalk Javascript Mathematica ActionScript)[L(4,$y)-1]

मेरे मूल संस्करण में लंबे इनपुट्स के साथ कुछ समस्याएँ थीं।
जब तक मुझे एहसास हुआ कि पर्ल सॉर्ट फ़ंक्शन वर्णानुक्रम में है।

सरणियों के बजाय सब्सट्रिंग्स का उपयोग करने से यह थोड़ा लंबा हो जाता है।

@L=qw(C C# C++ Java COBOL Python Clipper VBScript Smalltalk Javascript Mathematica ActionScript);sub l{my($s,$t)=@_;return length($t)if!$s;return length($s)if!$t;my($u,$v)=(substr($s,1),substr($t,1));substr($s,0,1)eq substr($t,0,1)?l($u,$v):(sort{$a<=>$b}(l($u,$v),l($s,$v),l($u,$t)))[0]+1}print$L[l('Perl',pop)-1]

परीक्षा

$ perl levenshtein.pl Php
C++

3

जे, 115 बाइट्स

{&((}.&'YABC'&.>|.i.4),(g'SMITHb'),'Clojure';(g'ComeFrom2'),((g=:}:;])'StackStacks'),<'CoffeeScript')@<:@(#-'J'&e.)

यह हिस्टोक्रेट की गणना चाल का उपयोग कर रहा है (1-अक्षर भाषा का उपयोग करके), और निम्नलिखित भाषाओं की सूची तैयार करता है:

┌─┬──┬───┬────┬─────┬──────┬───────┬────────┬─────────┬──────────┬───────────┬────────────┐
│C│BC│ABC│YABC│SMITH│SMITHb│Clojure│ComeFrom│ComeFrom2│StackStack│StackStacks│CoffeeScript│
└─┴──┴───┴────┴─────┴──────┴───────┴────────┴─────────┴──────────┴───────────┴────────────┘

उदाहरण के लिए:

   {&((}.&'YABC'&.>|.i.4),(g'SMITHb'),'Clojure';(g'ComeFrom2'),((g=:}:;])'StackStacks'),<'CoffeeScript')@<:@(#-'J'&e.) 'C++'
┌───┐
│ABC│
└───┘
   {&((}.&'YABC'&.>|.i.4),(g'SMITHb'),'Clojure';(g'ComeFrom2'),((g=:}:;])'StackStacks'),<'CoffeeScript')@<:@(#-'J'&e.) 'ActionScript'
┌────────────┐
│CoffeeScript│
└────────────┘
   f=:{&((}.&'YABC'&.>|.i.4),(g'SMITHb'),'Clojure';(g'ComeFrom2'),((g=:}:;])'StackStacks'),<'CoffeeScript')@<:@(#-'J'&e.)
   f 'Jython'
┌─────┐
│SMITH│
└─────┘
   f 'Python'
┌──────┐
│SMITHb│
└──────┘
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.