前書き
このサイトはコードスニペットの巨大なデータセットを急速に構築しているので、それで何かをしましょう!
これがデータファイルです。このサイトから取得した113言語の9,066の一意の言語とスニペットのペアが含まれています。形式はタブで区切られ(language-TAB-snippet)、スニペットのすべての改行がに置き換えられ<LF>
、すべてのタブが4つのスペースに置き換えられます。各言語には少なくとも5つのスニペットがあります。
[更新:以前見逃していたPythonとRegExpのいくつかのバージョンをマージするために、データファイルに小さな変更を加えました-上記のリンクが更新されました]
チャレンジ
コードスニペットを取得し、記述された言語を出力するプログラムまたは関数を作成します(詳細については以下を参照)。ソース+必要なデータの合計サイズは300バイト以下である必要があり、プログラムは独自のソースコードが与えられたときに正しい言語を出力する必要があります。最高の精度(上記のデータセットで最も正解)が優先されます。
ルール
- ソースコード、リソース、および必要なコンパイル/ランタイムフラグの合計サイズは300バイトを超えてはなりません。
- 回答は上記のデータセットに対してテストされます。入力として「スニペット」値の1つが与えられ、その出力がデータセットに従って「正しい」出力と比較されます。これはデータセット内のすべてのエントリに対して繰り返され、正解の最終的な数がスコアになります。
- 入力エンコーディングを選択できます。UTF-8を想定していますので、別のエンコーディングが必要な場合は回答で指定してください。
<LF>
改行に代わるものを使用する必要はありません。エントリがリテラル改行(char 10)として改行を受け取ることを期待している場合は、回答でそれを指定します。- エントリは、入力スニペットが記述されていると思われる言語を出力する必要があります。多くの言語文字列を圧縮する必要を避けるため、マッピングを許可します(「Java」の3を出力する場合は問題ありません)。回答のマッピングに注意してください。
- 各言語に対して1つの出力マッピングのみを使用できます(つまり、3が「Java」を意味する場合、4は「Java」を意味することもできません)。
- 独自のソースコードを与えられたとき、あなたのプログラムがなければなりません正解(必須出力は、記述されている言語)を生成します。
- データセット内のすべての言語をサポートする必要はありません。必要に応じて、追加の言語をサポートできます(たとえば、エントリがデータセット内の言語のいずれでもない場合)。
- プログラムは確定的である必要があります(同じ入力を2回提供すると、同じ出力が生成される必要があります)。
タイブレーク
- 関係は、1つのエントリが勝つまでデータセットを減らすことによって決定されます。データセットは、最も一般的な言語のすべてのスニペットを削除することで削減されます(つまり、まれな言語の精度によって関係が壊れます)。たとえば、完全なデータセットでAとBのスコアが70%の場合、すべてのPythonスニペットが削除されます。AとBの両方が60%を獲得した場合、CJamは削除されます。Aのスコアが50%で、Bのスコアが55%の場合、Bが勝者です。
- 100%の精度が達成された場合、同じ言語のより多くのサンプルを含む2番目の(ブラインド)データセットを使用して、同順位が決定されます。
例1
Pythonスクリプト:
print("python")
このスクリプトは、独自のソースコードを指定すると「python」を正常に生成するため、有効です。データセットでは、スコア1008/9066 = 11.1%
例2
JavaScript関数:
function f(s){return /function/.test(s)?1:2}
マッピング1→javascript、2→python。ここでも、独自のソースに対して1(「javascript」)が正常に生成され、データセットでは1092/9066 = 12.0%のスコアが付けられます。
データはどこから来たのですか?
このサイトの[code-golf]チャレンジからサンプルを取得するSEDEクエリを作成しました。結果の10,000件の回答から、ハッキングされたpythonスクリプトを使用してそれぞれのコードと言語名を見つけ、5つ未満の例ですべての言語を除外しました。データは100%クリーンではありませんが(プルしたコード以外のスニペットがあることは知っています)、十分に良いはずです。
今年の初めからこの課題に触発された:誰が言ったの?2016年大統領選挙
一部は言語とは何か?