投票率に対する回答


18

この質問は、投票数と回答数が等しい質問を見るのが好きだという事実に触発されています...


そこで、y'allの簡単なチャレンジを以下に示します。

チャレンジ:

与えられたcodegolf.stackexchange問題の票と回答の数(例えば間の比出力、質問ID votes/answers)。

詳細:

  • インターネットにアクセスできますが、アクセスできるのはstackexchange.comそのサブドメインのみです。URL短縮サービスは使用できません。

  • 任意の標準形式で入力および出力を行うことができます。

  • 比率は、10進数で10進数として出力する必要があり、10進数の後に少なくとも4つの{正確な}桁があります(ゼロは切り捨てられる場合があります)。

  • 質問に回答がない場合、プログラムは未定義の動作を引き起こす可能性があります。

  • score質問のを投票数として使用する必要がありますこちらを参照してください

これは、各言語の最小バイトがその言語で勝ち、全体で最小バイトが勝ちます。

以下にサンプルプログラムを示しPython 3 + requestsます。

import requests
import json

id = input("id> ")
url = "https://api.stackexchange.com/2.2/questions/" + id + "?site=codegolf"
content = requests.get(url).text
question = json.loads(content)["items"][0]

print(float(question["score"]) / question["answer_count"])

比率は、ゼロであっても、小数点の後に少なくとも4桁の10進数が必要ですか?例:41/4 = 10.25または10.2500
ピザパンツ184

@ pizzapants184 10.25は大丈夫
ソクラテスフェニックス

課題に答えられない場合はどうなりますか?比率は無限になりますか?
ミスターXcoder

質問の得点または総投票数ですか?
AdmBorkBork

@ Mr.Xcoderの場合、未定義の動作は問題ありません
ソクラ

回答:


10

JavaScript(ES6)、103 102バイト

のルートレベルから実行する必要がありますapi.stackexchange.comPromise結果を含むオブジェクトを返します。

n=>fetch(`questions/${n}?site=codegolf`).then(r=>r.json()).then(({items:[j]})=>j.score/j.answer_count)

特定のパスから実行する必要がある場合は、92 90バイトになります。

n=>fetch(n+`?site=codegolf`).then(r=>r.json()).then(({items:[j]})=>j.score/j.answer_count)

それを試してみてください

ここで動作するように完全なURLが追加されました。

f=
n=>fetch(`//api.stackexchange.com/questions/${n}?site=codegolf`).then(r=>r.json()).then(({items:[j]})=>j.score/j.answer_count)
onchange=_=>f(+i.value).then(t=>o.innerText=t)
<input id=i type=number><pre id=o>


7
置換i=>(j=i.items[0])({items:[j]})=>jてバイトを保存します。
kamoroso94

素敵なトリック、ありがとう、@ kamoroso94。覚えておく必要があります。
シャギー

8

Stratos、40バイト

シャギーのおかげで-4バイト

f"¹⁵s/%²"r"⁷s"@0
{s"answer_⁰"
⁰s"score"/

それを試してみてください!

Stratosは質問を専門としてい

説明:

コードは次のように解凍されます。

f"api.stackexchange.com/questions/%?site=codegolf"r"items"@0
{s"answer_count"
⁰s"score"/

最初の行から開始して、Stratosは右から左に2連を評価します。

f"api.stackexchange.com/questions/%?site=codegolf"r"items"@0手段は「ダイアドを評価し@、左側の引数を指定してf"api.stackexchange.com/questions/%?site=codegolf"r"items"右側の引数0@取得するn番目の JSON配列の要素を。

を評価するためにf"api.stackexchange.com/questions/%?site=codegolf"r"items"、次にr左側の引数f"api.stackexchange.com/questions/%?site=codegolf"と右側の引数を使用してダイアドを評価します"items"r指定された名前のJSON配列を取得します。

次に、を評価する必要がありf"api.stackexchange.com/questions/%?site=codegolf"ます。まず、%入力に置き換えられます。f「このURLのコンテンツを取得する」という意味です。

これで、2行目に移動できます。改行は「評価したものを暗黙的な引数リストに追加する」ことを意味します

次に、我々は評価するsと(特定の名前を持つJSONオブジェクト内の文字列を取得){"answer_count"{暗黙的な引数スタックから要素を取得して返し、スタックに追加します。

次に、その出力を暗黙的な引数スタックに追加します。

を評価するために、暗黙的な引数スタックに⁰s"score"/ダイアド/(除算)⁰s"score"とエレメントを適用しています。

評価するために、暗黙の引数スタックの0番目の要素からJSONオブジェクトから⁰s"score"文字列"score"を取得しています。

これで、の出力が出力/され、プログラムが終了します。


APIバージョン(2.2/)を捨てることで4バイトを節約します。
シャギー

1
@Shaggyは、APIバージョンが不要であることに気づかなかった、ありがとう。
消さ

5

R + jsonlite、111バイト

function(n,x=jsonlite::fromJSON(sprintf('http://api.stackexchange.com/questions/%s?site=codegolf',n))$i)x$s/x$a

Rフィドルリンク

jsonliteは、優れたJSON <-> R変換ライブラリであり、非常にうまく機能します。私はR用のJSONパーサーをゴルフしようとしていませんでした...


httpプロトコルを使用してバイトを保存できます。また、私は142729そこにハードコーディングされるべきではないと推測していますか?
シャギー

@Shaggy良いコール、ありがとう。コピーと貼り付けが速すぎました。
ジュゼッペ

4

T-SQL、64 54バイト

SQLが(ほとんどの)他の言語に勝ることはまれです!API URLの代わりに、Stack Exchange Data Explorerに直接行きました。

SELECT 1.0*Score/AnswerCount FROM Posts WHERE Id=##i##

これ##i##は標準SQLではなく、入力を求めるStack Exchangeの形式です。

データエクスプローラーのソースは毎晩更新されるため、値は最新ではないことに注意してください。

回答のない質問にはゼロ除算エラーがスローされます。

編集:明示的なCONVERTtoの代わりに1.0を掛けることで10バイトを保存しましたFLOAT


他の人を倒すことはできますが、すべてではありません:)
Okx

まあ、別の解決策がありましたが、学校にいたので投稿することはありませんでした...私の答えはあなたのものと似ていますか?私を削除する必要がありますか?
完全に人間

@icrieverytimハ、うん、ほぼ同じクエリのように見えますが、10バイトを節約するために編集しました。
BradC

@BradC回答をMathematicaの回答に編集しましたlol。
完全に人間

3

PowerShell、130バイト

($a=(ConvertFrom-Json(iwr("http://api.stackexchange.com/questions/"+$args+"?site=codegolf")).content).items).score/$a.answer_count

実行Invoke- WEB RURLに対するequestは、取得.content、そのないConvertFrom-Jsonという内容の、となっ.itemsているJSONオブジェクトの。を分子として格納$aおよび取り出し.scoreます。分母は.answer_countです。その値はパイプラインに残り、出力は暗黙的です。

質問に未回答の場合、これ「Divide by zero」エラー投げます。


3

Japt83 82バイト

Japtがネイティブにそれを達成できないので、これがどのように機能するかを試してみてください。基本的にこれが行っているのはeval私のJSソリューションの圧縮バージョンを実行することだけです。Japt JS なので、これをルートレベルから実行することを要求し、結果を含むオブジェクトをapi.stackexchange.com返すこともできPromiseます。

Ox`fet®("quÀËs/{U}?ÐÒ=¬¸golf").È(r=>r.js()).È(i=>(j=i.ems[0]).sÖ/j.s³r_Öt)
  • それを見る
  • 試してみてください -このバージョンの余分なバイト//api.stackexchange.com/はURLに含めることで説明されているconsole.logので、実際に動作することを確認できます

1
o0なぜコードをリンクにしたのですか?それは、ユーザースクリプトのバイトカウントの表示さえも台無しにしています。i.imgur.com/SO2zgAy.png
完全に人間

2

Mathematica、124バイト

N@("score"/.(u="items"/.Import["http://api.stackexchange.com/questions/"<>#<>"?site=codegolf","JSON"]))/("answer_count"/.u)&

Mathematicaにはデータ型と呼ばれるものがRuleあり、私を混乱させます。:P


1

Python 3 +リクエスト、149バイト

Xcoder氏のおかげで-1バイト。

from requests import*
u=get('http://api.stackexchange.com/questions/%s?site=codegolf'%input()).json()['items'][0]
print(u['score']/u['answer_count'])

リンクはPython 2へのリンクです。ところで、Python 2とPython 3(TIO上)の両方でエラーがスローされます。

TIO whoopsではインターネットにアクセスできません。回答の書式設定にTIOを使用しましたlol。
完全に人間

(今のところ)http十分であると思います。
Mr Xcoder


0

PHP、167バイト

<?$f=json_decode(gzdecode(file_get_contents('https://api.stackexchange.com/2.2/questions/'.$argv[1].'?site=codegolf')))->items[0];echo $f->score/$f->answer_count;

これでターボ高速クラック。ファイルとして保存し、次のようにターミナルで実行します。

php -f file.php 143083

これを減らす方法かもしれません。

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