レーベンシュタイン距離バイアス


10

A文字列を指定してS、別のプログラミング言語の名前を出力する名前の言語でプログラムを記述しますB。長さBに等しくなければならないレーベンシュタイン距離(略称「LD」)の間AS。プログラミング言語と見なされるにBは、esolangsページまたはWikipediaページが必要です。

例:

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

間のLD PythonJython出力ので、一つでありますR

最大LDまでカバーする必要があり12ます。LDは0発生しないと想定できます。

これはなので、バイト単位で最も短いプログラムが優先されます。

(これが私の最初の課題です!フィードバックを歓迎します)


リーダーボード


なんで12?大きな名前の言語はありませんか?
Conor O'Brien

@CᴏɴᴏʀO'Bʀɪᴇɴそれは理にかなっています。
Seadrus、2015

@ThomasKwa信じてる Rプログラミング言語である...それは簡単だったかもしれないCDなど
Seadrus

1
つまり、レーベンシュタイン距離に等しい長さの名前を意味しますか?何がプログラミング言語としてカウントされますか?esolangs / Wikipediaページが必要ですか?
リルトシアスト2015

6
「Patton」と「Python」のLDは3ではなく2です。
Leif Willerts

回答:


3

O、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

C、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]);}

1文字の名前の言語を選択すると、距離の計算が簡単になります。「C」からの文字列の距離は、文字列の長さから「C」を含む場合は1を引いたものになります。私はRまたはJが同じ戦略を使用してこれを打つことができると想像します。


どうしてgets(&s)クラッシュしませんか?
anatolyg 2015

よくわかりませんが、Anarchy Golfとideoneで動作しますが、実際にはクリケットではありません。ARGVに割り当てられた未使用のメモリを使用していると思います。
ヒストクラート

5

Perl 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]

元のバージョンでは、長い入力にいくつかの問題がありました。
Perlのソート機能がアルファベット順にソートされることに気づくまで。

配列の代わりに部分文字列を使用すると、少し長くなることがわかります。

@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

J、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│
└──────┘
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.