2
PPCGハンディキャップシステム
誰もが知っているように、meta は 言語間のコードゴルフのスコアリングに関する苦情であふれ てい ます(はい、各単語は別々のリンクであり、これらは氷山の一角にすぎないかもしれません)。 実際にPythのドキュメントを調べることに煩わされた人たちに非常にWithしているので、コードチャレンジに特化したWebサイトにふさわしい、建設的なチャレンジをもう少し行うのは良いことだと思いました。 課題はかなり簡単です。入力として、言語名とバイト数があります。これらを関数の入力、stdinまたは言語のデフォルトの入力方法として使用できます。 出力として、修正されたバイト数、つまりハンディキャップが適用されたスコアがあります。それぞれ、出力は関数出力、stdoutまたは言語のデフォルトの出力方法である必要があります。タイブレーカーが大好きなので、出力は整数に丸められます。 最もい、ハッキングされたクエリ(リンク -自由にクリーンアップできます)を使用して、コードゴルフの質問に対するすべての回答のスナップショットを含むデータセット(.xslx、.ods、.csvを含むzip)を作成しました。。あなたはこのファイルを使用する(そして、それはあなたのプログラムに利用可能であることを前提とし、例えば、それは同じフォルダ内にあります)、または別の従来の形式にこのファイルを変換することができます(、、など-それだけで、元のデータが含まれていてもよいです!)。名前には、選択した拡張子を付けたままにし てください。.xls.mat.savQueryResults.extext 次に詳細を説明します。言語ごとに、Boilerplate BおよびVerbosity Vパラメーターがあります。これらを一緒に使用して、言語の線形モデルを作成できます。ましょうn実際のバイト数でありc、修正されたスコアです。単純なモデルを使用しn=Vc+Bて、修正されたスコアを取得します。 n-B c = --- V 簡単ですよね?さて、決定するためVとB。ご想像のとおり、線形回帰、またはより正確には最小二乗加重線形回帰を行います。詳細については説明しません。方法がわからない場合は、ウィキペディアがあなたの友人であるか、運がよければあなたの言語のドキュメントです。 データは次のようになります。各データポイントは、バイト数nと質問の平均バイト数になりcます。票を計上するために、ポイントは票の数に1を加えたもの(0票を計上するため)で重み付けされますv。反対票のある回答は破棄する必要があります。簡単に言えば、1票の回答は0票の2回答と同じように数えられます。 次に、このデータは、n=Vc+B加重線形回帰を使用して前述のモデルに適合します。 たとえば、特定の言語のデータが与えられた場合 n1=20, c1=8.2, v1=1 n2=25, c2=10.3, v2=2 n3=15, c3=5.7, v3=5 ここで、関連する行列とベクトルA、yおよびWを、ベクトル内のパラメーターを使用して構成します [1 c1] [n1] [1 0 0] x=[B] A=[1 c2] y=[n2] W=[0 2 0], [V] [1 c3] [n3] …