वोट अनुपात का उत्तर


18

यह प्रश्न इस तथ्य से प्रेरित है कि मुझे समान वोट और उत्तर गणना वाले प्रश्न देखना पसंद है ...


तो यहाँ y'all के लिए एक सरल चुनौती है:

चुनौती:

एक codegolf.stackexchangeप्रश्न आईडी को देखते हुए , प्रश्न के वोटों और उत्तरों की संख्या के बीच अनुपात (जैसे votes/answers)।

सुनिश्चित वर्णन:

  • आप इंटरनेट का उपयोग कर सकते हैं, लेकिन आप केवल stackexchange.comइसके विभिन्न उप-डोमेन तक ही पहुँच सकते हैं। आप URL शॉर्टनर का उपयोग नहीं कर सकते हैं।

  • आप इनपुट ले सकते हैं और किसी भी मानक प्रारूप में आउटपुट दे सकते हैं।

  • आपको बेस 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 दशमलव अंकों की आवश्यकता होती है? जैसे ४१ / ४ = १०.२५ या १०.२५००
pizzapants184 १17

@ pizzapants184 10.25 ठीक है
सुकराती फीनिक्स

अगर चुनौती का जवाब नहीं दिया गया तो क्या होगा? तब अनुपात अनंत होगा?
श्री एक्सकोडर

क्या आप सवाल पर स्कोर या कुल वोट का मतलब है ?
AdmBorkBork

@ Mr.Xcoder उस मामले में, अपरिभाषित व्यवहार ठीक है
सुकराती फीनिक्स

जवाबों:


10

जावास्क्रिप्ट (ईएस 6), 103 102 बाइट्स

के जड़ स्तर से चलाने की आवश्यकता है api.stackexchange.comPromiseपरिणाम वाली कोई वस्तु लौटाता है ।

n=>fetch(`questions/${n}?site=codegolf`).then(r=>r.json()).then(({items:[j]})=>j.score/j.answer_count)
  • 1 बाइट kamoroso94 के लिए धन्यवाद बचा लिया ।

यदि यह आवश्यक है कि इसे किसी विशिष्ट पथ से चलाया जाए, तो यह 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 बाइट्स

-4 बाइट्स शैगी को धन्यवाद

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

कोशिश करो!

स्ट्रैटोस में माहिर हैं प्रश्नों ।

स्पष्टीकरण:

कोड निम्नलिखित को डिकम्प्रेस करता है:

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

पहली पंक्ति से शुरू करते हुए, स्ट्रेटोस दाएं से बाएं तक के रंगों का मूल्यांकन करता है।

f"api.stackexchange.com/questions/%?site=codegolf"r"items"@0इसका मतलब है "युग्म का मूल्यांकन @बाएँ हाथ तर्क के साथ f"api.stackexchange.com/questions/%?site=codegolf"r"items"और दाएँ हाथ तर्क 0@हो जाता है JSON सरणी का nth तत्व ।

मूल्यांकन करने के लिए 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 की सामग्री प्राप्त करें"।

अब, हम दूसरी पंक्ति में आगे बढ़ सकते हैं। न्यूलाइन का अर्थ है "जो हमने निहित तर्क सूची में मूल्यांकन किया है उसे जोड़ें"

अगला, हम मूल्यांकन करते हैं s(एक निश्चित नाम के साथ JSON ऑब्जेक्ट में स्ट्रिंग प्राप्त करें) {और "answer_count"{निहित तर्क स्टैक से एक तत्व लेता है, इसे वापस करता है, और इसे स्टैक में वापस जोड़ता है।

फिर, हम उस के आउटपुट को निहित तर्क स्टैक में जोड़ते हैं।

मूल्यांकन करने के लिए ⁰s"score"/, हम डायड /(डिवाइड) ⁰s"score"और निहित तर्क स्टैक से एक तत्व को लागू कर रहे हैं ।

मूल्यांकन करने के लिए ⁰s"score"हम "score"JSON ऑब्जेक्ट से स्ट्रिंग तर्क स्टैक में 0 तत्व से प्राप्त कर रहे हैं ।

अब, आउटपुट /प्रिंट होता है और प्रोग्राम समाप्त हो जाता है।


एपीआई संस्करण ( 2.2/) को डिच करके 4 बाइट्स बचाएं ।
शैगी

1
@ शैगी को एहसास नहीं हुआ कि एपीआई संस्करण की आवश्यकता नहीं है, धन्यवाद। 44 को पार नहीं कर रहा: पी
ओकेक्स

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 रूपांतरण पुस्तकालय है जो काफी अच्छी तरह से काम करता है। मैं आर के लिए एक JSON पार्सर गोल्फ के बारे में नहीं था ...


आप httpप्रोटोकॉल का उपयोग करके एक बाइट बचा सकते हैं । इसके अलावा, मुझे लगता है कि 142729वहाँ में हार्डकोड नहीं होना चाहिए?
झबरा

@ सुग्गी गुड कॉल, धन्यवाद। मैंने नकल की और बहुत तेजी से चिपकाया।
Giuseppe

4

T-SQL, 64 54 बाइट्स

यह दुर्लभ है कि एसक्यूएल (अधिकांश) अन्य भाषाओं को हरा सकता है! API URL के बजाय मैं सीधे Stack Exchange Data Explorer में गया :

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

##i## मानक SQL नहीं है, यह इनपुट के लिए संकेत देने के लिए स्टैक एक्सचेंज का प्रारूप है।

ध्यान दें कि डेटा एक्सप्लोरर स्रोत केवल रात में अपडेट किया जाता है, इसलिए मान वर्तमान नहीं हैं।

बिना उत्तर वाले प्रश्नों पर शून्य त्रुटि से भाग देंगी।

संपादित करें : एक स्पष्ट के बजाय 1.0 से गुणा करके 10 बाइट्स सहेजे CONVERTगए FLOAT


दूसरों को हरा सकते हैं, लेकिन सभी को नहीं :)
19 अक्टूबर को ओकेएक्स

ओह माँ, मेरे पास एक और उपाय था लेकिन मैं स्कूल में था इसलिए मैंने इसे पोस्ट करना कभी खत्म नहीं किया ... क्या मेरा जवाब भी आपके जैसा ही है? क्या मुझे अपना हटाना चाहिए?
बहीमान

@icrieverytim हा, हाँ, बहुत समान क्वेरी जैसा दिखता है, हालाँकि मैंने अभी 10 और बाइट्स बचाने के लिए मेरा संपादन किया है।
ब्रैड सीप 18'17

@ ब्रैडक ने अपने उत्तर को मैथेमेटिका उत्तर योग्य में संपादित किया।
पूरी तरह से

3

पॉवरशेल , 130 बाइट्स

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

URL के विरूद्ध Invoke- Web Rसमान करता है, उसको मिलता .contentहै, ConvertFrom-Jsonउस सामग्री को करता है, और .itemsउस BSON ऑब्जेक्ट को प्राप्त करता है। भंडार है कि $aऔर .scoreअंश के रूप में बाहर खींचता है । भाजक है .answer_count। उस मूल्य को पाइपलाइन पर छोड़ दिया गया है और आउटपुट निहित है।

यदि प्रश्न अनुत्तरित है, तो यह "शून्य से विभाजित" त्रुटि को टॉस करना चाहिए


3

जाप , 83 82 बाइट्स

यह देखने की कोशिश करना चाहता था कि यह कैसे काम करेगा, यह देखते हुए कि जाप मूल रूप से इसे पूरा नहीं कर सकता है। अनिवार्य रूप से यह सब मेरे जेएस समाधानeval का एक संकुचित संस्करण है । Japt के रूप में है जे एस तो हम है कि इस के रूट स्तर से चलाया जा सकता है की आवश्यकता होती है और यह भी एक वापसीapi.stackexchange.comPromise वस्तु परिणाम हैं।

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

गणितज्ञ, 124 बाइट्स

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

गणितज्ञ के पास एक डेटा प्रकार होता है जिसे कहा जाता है Rule यह और यह मेरे से बाहर निकलने के लिए भ्रमित करता है। : पी


1

अजगर ३ + अनुरोध, 149 बाइट्स

-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 का उपयोग करता था।
पूरी तरह से

मुझे लगता है कि (अभी के लिए) httpपर्याप्त है।
श्री एक्सकोडर


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

इसे कम करने का एक तरीका हो सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.