투표율에 대한 답변


18

이 질문은 투표와 답변 수가 같은 질문을 보는 것을 좋아한다는 사실에서 영감을 얻었습니다 ...


따라서 다음은 간단한 문제입니다.

도전:

codegolf.stackexchange질문 ID가 주어지면 질문 투표와 답변 수 사이의 비율을 출력하십시오 (예 :) votes/answers.

사양 :

  • 인터넷에 액세스 할 수 있지만 stackexchange.com다양한 하위 도메인 에만 액세스 할 수 있습니다 . URL 단축기를 사용할 수 없습니다.

  • 표준 형식으로 입력하고 출력 할 수 있습니다.

  • 소수점 이하 4 자리 이상의 {정확한} 숫자를 사용하여 10 진법으로 10 진수로 비율을 출력해야합니다 (0이 잘릴 수 있음).

  • 질문에 대한 답변이 없으면 프로그램에서 정의되지 않은 동작이 발생할 수 있습니다.

  • 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"])

소수점 이하 자릿수가 0 인 경우에도 소수점 이하 4 자리가 필요합니까? 예 : 41 / 4 = 10.25 또는 10.2500
pizzapants184

@ pizzapants184 10.25 괜찮습니다
Socratic Phoenix

도전에 응답하지 않으면 어떻게됩니까? 그렇다면 그 비율은 무한할까요?
Mr. Xcoder

질문에 대한 점수 또는 총 투표 를 의미 합니까?
AdmBorkBork

이 경우 @ Mr.Xcoder, 정의되지 않은 동작은 괜찮습니다
Socratic Phoenix

답변:


10

자바 스크립트 (ES6) 103 102 바이트

의 루트 수준에서 실행해야합니다 api.stackexchange.com. Promise결과가 포함 된 개체를 반환합니다 .

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

스트라토스 , 40 바이트

Shaggy 덕분에 -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는 오른쪽에서 왼쪽으로 dyad를 평가합니다.

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"와 오른쪽 인수로 dyad 를 평가합니다 "items". r지정된 이름의 JSON 배열을 가져옵니다.

다음으로 평가해야합니다 f"api.stackexchange.com/questions/%?site=codegolf". 먼저 %입력으로 바뀝니다. f"이 URL의 내용을 가져옵니다"를 의미합니다.

이제 두 번째 줄로 넘어갈 수 있습니다. 개행은 "우리가 평가 한 것을 암시 적 인수 목록에 추가"를 의미합니다.

다음 s으로 {and로 평가합니다 (특정 이름의 JSON 객체에서 문자열 가져 오기) "answer_count". {암시 적 인수 스택에서 요소를 가져 와서 반환 한 다음 다시 스택에 추가합니다.

그런 다음 그 결과를 내재적 인수 스택에 추가합니다.

를 평가하기 위해 암시 적 인수 스택에 ⁰s"score"/dyad /(나누기) ⁰s"score"및 요소를 적용합니다 .

평가하기 위해 함축적 인수 스택의 0 번째 요소에서 JSON 객체 ⁰s"score"의 문자열 "score"을 가져옵니다 .

이제 출력 /이 인쇄되고 프로그램이 종료됩니다.


API 버전을 삭제하여 4 바이트를 절약하십시오 ( 2.2/).
얽히고 설킨

1
@Shaggy API 버전이 필요하지 않다는 것을 몰랐습니다. 감사합니다. 44 : P
Okx

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

@Shaggy good call, 감사합니다. 복사해서 너무 빨리 붙여 넣었습니다.
주세페

4

T-SQL, 64 54 바이트

SQL이 다른 언어를 능가하는 경우는 거의 없습니다! API URL 대신 Stack Exchange Data Explorer 로 직접 이동했습니다 .

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

##i##입력 프롬프트에 스택 교환의 형식을 표준 SQL 아니다.

데이터 탐색기 소스는 야간에만 업데이트되므로 값이 최신이 아닙니다.

답이없는 질문에 0으로 나누기 오류가 발생합니다.

편집 :에 명시 적 대신 1.0을 곱하여 10 바이트를 절약 CONVERT했습니다 FLOAT.


다른 사람을 이길 수는 있지만 전부는 아닙니다 :)
Okx

오 마안, 다른 해결책이 있었지만 학교에 있었기 때문에 나는 그것을 게시하지 않았습니다 ... 내 대답이 당신과 너무 비슷합니까? 내 것을 삭제해야합니까?
완전히 인간적인

@icrieverytim Ha, yep은 거의 동일한 쿼리처럼 보이지만 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 R의 URL에 대한 equest는 도착 .content, 그 작업을 수행 ConvertFrom-Json하는 콘텐츠와를 가져 .items그 JSON 객체의. 상점에 그 $a와 당긴 아웃 .score분자로. 분모는 .answer_count입니다. 이 값은 파이프 라인에 남아 있으며 출력은 암시 적입니다.

질문은 답이없는 경우,이 해야 오류 "0으로 나누기"던져.


3

apt , 83 82 바이트

Japt이 기본적으로 달성 할 수없는 것으로 보아 어떻게 작동하는지 확인하려고했습니다. 본질적으로이 모든 것은 내 JS 솔루션eval 의 압축 버전을 사용하는 것 입니다. Japt JS 이므로 루트 레벨에서 실행 하고 결과가 포함 된 객체를 반환 하도록 요구할 수 있습니다.api.stackexchange.comPromise

Ox`fet®("quÀËs/{U}?ÐÒ=¬¸golf").È(r=>r.js()).È(i=>(j=i.ems[0]).sÖ/j.s³r_Öt)

1
o0 왜 코드를 링크로 만들었습니까? 심지어 사용자 스크립트의 바이트 수 표시 lol과 혼동됩니다. 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있으며 나에게 혼란을 초래합니다. :피


1

파이썬 3 + 요청, 149 바이트

Mr. 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에 대한 링크입니다. Btw, Python 2와 Python 3 (TIO) 모두에서 오류가 발생합니다.

TIO에 인터넷에 접속할 수 없습니다. 방금 답변 서식 LOL에 TIO를 사용했습니다.
완전히 인간적인

나는 (현재로서는) 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.