課題に近いコード:インセプション


15

これは、この課題の続編です。課題に近いコード:整数の合計

このチャレンジは少し難しく、またクールなタイトルになります(これが私が選んだ理由です):

2つの文字列間のレーベンシュタイン距離を計算する

最後の課題と同様に、この課題のスコアは、コードと上記の引用の間のレーベンシュタイン距離です。

それでは、詳細を説明しましょう!

あなたのプログラムは2つの入力を受け取ります。両方の文字列には末尾のスペースや改行はなく、それらの間のレーベンシュタイン距離を出力します。レーベンシュティエン距離は、ある文字列を別の文字列に変換するために必要な追加、削除、および置換の数として定義されます。計算方法の詳細については、上記のリンクにあるウィキペディアのページをご覧ください。プログラムが機能するかどうかをテストするには、この計算機を使用します。プログラムは、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]

これを使用するには、2つの文字列でCalculateを呼び出します。これが返されるので、呼び出しをで囲む必要もありますprint[]。これが許可されていない場合、私のスコアは30です。

例:

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

Webインタープリターでは関数の定義が許可されていないため、Frinkをダウンロードする必要があります。Javaアプレットであることを考慮して、すべてのシステムで実行する必要があります。ダウンロード手順ここ。


ちょっと おい!これは、私が取り組んでいるシンボリックのレーベンシュタインインプリメンテーションですk=λ:Δ(ί,ί)


3
興味深い言語は、Mathematicaを思い出させます。
アレックスA.

内蔵の機能標準抜け穴と考えられる課題を、解決する(ただしので、この挑戦にすべての答えの90℅ように見える)して使用するなど、このカウント
ジョン・ドヴォルザーク

1
@JanDvorakビルトインは、標準の抜け穴としてのメタアンサーリストのビルトインの投票の内訳がほぼ半分であるため、一種の灰色の領域です。
アレックスA.

5

R、距離35

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

これにより、Calculateパラメータtheとを使用して関数が作成されますLevenshtein。R組み込み関数adistを使用して距離を計算します。内の文字列パラメータは、adist本質的にtheLevenshteinに改名betweenしてtwo


5

PHP4.1、距離 32 22 15 14

非常に基本的なもので、刺激的なものはありません。

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

または、より短いバージョン:

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

これが機能するには、POST / GET / COOKIE / session変数をキーで送信/設定する必要があります。

  • distanceistance短い方)
  • between_two_stringsetweentwostrin短い方)

引数はその順序です。

http://ideone.com/QzNZ8Tでスコアをテストします

例:

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

@AboveFire申し訳ありませんが、あなたの編集を受け入れることはできません。OPを引用する"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か?
イスマエルミゲル

実際、そうすべきです。
永劫回帰

1
また、あなたが欠けている;
イスマエルミゲル

私はあなたに28の距離とソリューションを提供します:echo$Calculate_the=levenshtein($_GET[distance_between_two],$_GET[strings]);
イスマエルミゲル

2

ピップ、距離50

組み込みのレーベンシュタイン関数を使用しません!

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

このコードは、再帰的レーベンシュタインアルゴリズムを実装しています。そのため、非常に遅く、長さ5の文字列でも数秒かかります。プログラム自体を実行して確認することはお勧めしません。

空白とコメント付きの基本コードを次に示します。

; 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です。これにより、レーベンシュタイン距離が少し短くなります。

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