誰もが知っているように、meta は 言語間のコードゴルフのスコアリングに関する苦情であふれ てい ます(はい、各単語は別々のリンクであり、これらは氷山の一角にすぎないかもしれません)。
実際にPythのドキュメントを調べることに煩わされた人たちに非常にWithしているので、コードチャレンジに特化したWebサイトにふさわしい、建設的なチャレンジをもう少し行うのは良いことだと思いました。
課題はかなり簡単です。入力として、言語名とバイト数があります。これらを関数の入力、stdin
または言語のデフォルトの入力方法として使用できます。
出力として、修正されたバイト数、つまりハンディキャップが適用されたスコアがあります。それぞれ、出力は関数出力、stdout
または言語のデフォルトの出力方法である必要があります。タイブレーカーが大好きなので、出力は整数に丸められます。
最もい、ハッキングされたクエリ(リンク -自由にクリーンアップできます)を使用して、コードゴルフの質問に対するすべての回答のスナップショットを含むデータセット(.xslx、.ods、.csvを含むzip)を作成しました。。あなたはこのファイルを使用する(そして、それはあなたのプログラムに利用可能であることを前提とし、例えば、それは同じフォルダ内にあります)、または別の従来の形式にこのファイルを変換することができます(、、など-それだけで、元のデータが含まれていてもよいです!)。名前には、選択した拡張子を付けたままにし てください。.xls
.mat
.sav
QueryResults.ext
ext
次に詳細を説明します。言語ごとに、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] [0 0 5]
行列方程式を解く('
転置を表す)
A'WAx=A'Wy
以下のためにx
(その結果、我々は我々の取得B
とV
パラメータ)。
あなたのスコアは、自分自身の言語名と:バイトが与えられたときに、あなたのプログラムの出力となります。そう、今度はJavaとC ++のユーザーでさえ勝つことができます!
警告:クエリは、 'cool'ヘッダーの書式設定を使用し、コードチャレンジの質問をcode-golfとしてタグ付けするため、多くの無効な行を持つデータセットを生成します。私が提供したダウンロードでは、外れ値のほとんどが削除されています。クエリで提供されるCSVを使用しないでください。
ハッピーコーディング!
C++ <s>6 bytes</s>
です。その上、今日までT-SQLを実行したことがなく、バイトカウントを抽出できたことにすでに感心しています。