আদর্শ প্রশ্ন


16

আদর্শ প্রশ্নটি কী করে? সম্ভবত এটি কেবল একটি গভীর চিন্তার বিমূর্ততা এবং একটি স্বপ্ন, একটি আশা, একটি চিন্তার, একটি (… 5,024.2 অক্ষর বাদ দেওয়া ) এর সূচনা হয় । অতএব, আমি প্রস্তাব দিচ্ছি যে আমরা প্রশ্নগুলির পরিমাণ নির্ধারণের জন্য এই জাতীয় কারণটি পাই। আমি আরও প্রস্তাব দিচ্ছি যে এই ফ্যাক্টরটিকে Q F বা Q-factor বলা যেতে পারে । আমি কোনও প্রশ্নের কি-ফ্যাক্টরটি এইভাবে নির্ধারণ করি:

(এটি প্রত্যাহার করুন ।)

উদ্দেশ্য ইনপুট হিসাবে একটি নম্বর দেওয়া , পিপিসি.এস.এস. উপর সংশ্লিষ্ট প্রশ্নের কি-ফ্যাক্টর নির্ধারণ করুন। যদি প্রশ্নটির অস্তিত্ব না থাকে তবে কেবল আউটপুট ;-;(ক্রন্দন ইমোট)।

উদাহরণস্বরূপ, নিন । ( এই প্রশ্ন ):

নেট ভোট, এই ক্ষেত্রে, মানে

views     = 23435
net votes = 33
edits     = 6
answers   = 30, answers^2 = 900
comments  = 19
charsIOPN = "Joe Z.".length = 6

তাই:

r_F = 6 / 6 = 1
Q_F = r_F * (23435 * 33 + 6) / (900 - 19)
    =  1  *      773361      /    881
    ~ 877.821793

কিউ এফ- তে কমপক্ষে 2 টি গুরুত্বপূর্ণ চিত্র সরবরাহ করুন ।

এটি একটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম প্রোগ্রামটি জিতে।


দ্রষ্টব্য: দয়া করে আপনার প্রোগ্রাম চলমান তিনটি উদাহরণ অন্তর্ভুক্ত করুন, যার একটিতে অবশ্যই এই প্রশ্ন হওয়া উচিত। অন্য দুটি সিদ্ধান্ত নিতে আপনার হয়। (এটি কেবল একটি নিশ্চিতকরণের চেক।


1
@AlexA। হয় ঠিক আছে। এবং আমার প্রতিনিধি তাকান! : ডি এটি একটি rep অঙ্ক! (এটি 888, যদি কেউ উপস্থাপিত হয়))
কনর

3
এটি লক্ষ্য করা আগ্রহী হতে পারে যে এসই এপিআই কোনও পোস্টে সম্পাদনার সংখ্যা প্রকাশ করে না।
অ্যালেক্স এ।

2
অ্যালেক্স সম্পাদনা সম্পর্কে একটি ভাল পয়েন্ট তোলে। এটির জন্য এপিআই ব্যবহার করার কোনও দ্রুত উপায় নেই বলে অন্য সমস্ত পরিসংখ্যানকে সংযুক্ত করার সাথে সাথে সম্পাদনার সংখ্যা পেতে কেবলমাত্র কোডের প্রয়োজন হতে পারে। এছাড়াও, ইউআরএল সংক্ষিপ্তকরণগুলি ব্যবহার করা যেতে পারে?
ক্যালভিনের শখ

1
@ ডিজেএমসিএমহেম মন্তব্যগুলি এটিকে আরও মূল্যবান প্রশ্ন করে তোলে - তারা বর্ণকে আরও ছোট করে তোলে।
ড্যানিয়েল এম

5
যদিও আমি প্রশ্নটি কী তা জানি না, তবে আমি উত্তরটি বেশিরভাগ ক্ষেত্রে নিশ্চিত
স্ট্যাটাস

উত্তর:


11

জুলিয়া, 411 382 367 355 353 বাইট

এটি বেশ দীর্ঘ কিন্তু এটি কার্যকর যে আমি খুব খুশি!

using Requests
n->(R(t)=readall(get(t));G(t)=JSON.parse(R("http://api.stackexchange.com/2.2/questions/$t?site=codegolf"))["items"];j=G(n)[1];d=parse(Int,match(r"<span \S+n (\d+)",R("http://codegolf.xyz/posts/$n/revisions")).captures[1]);d/length(j["owner"]["display_name"])*(j["view_count"]*j["score"]+d)/(j["answer_count"]^2-length(G("$n/comments"))))

এটি একটি নামবিহীন ফাংশন তৈরি করে যা কোনও পূর্ণসংখ্যাকে ইনপুট হিসাবে গ্রহণ করে এবং একটি ফ্ল্যাট ফেরত দেয়।

এটি Requestsপ্যাকেজ প্রয়োজন , যা ব্যবহার করে ইনস্টল করা যেতে পারে Pkg.add("Requests")। যে প্যাকেজ জন্য পদ্ধতি সরবরাহ করেBase.get() HTTP অনুরোধ জমা দেওয়ার জন্যএটি JSONপ্যাকেজটিও আমদানি করে (যার উপর এটি নির্ভর করে, তাই এটি আলাদাভাবে ইনস্টল করার দরকার নেই) যা আমরা প্রতিক্রিয়াতে JSON আউটপুট পার্স করার জন্য ব্যবহার করি।

Ungolfed:

using Requests

function f(n::Int)
    # Define a function to submit an HTTP request and read
    # the response, returning a string
    R(t) = readall(get(t))

    # Define a function that submits a request, reads all text
    # as JSON, parses it, and extracts the items field
    G(t) = begin
        api = "http://api.stackexchange.com/questions"
        JSON.parse(R("$api/$t?site=codegolf"))["items"]
    end

    # Get the data for the question using the API
    j = G(n)[1]

    # Scrape the number of edits from the revision history HTML
    # using minxomat's handy shortened PPCG URL
    h = R("http://codegolf.xyz/posts/$n/revisions")
    d = parse(Int, match(r"<span \S+n (\d+)", h).captures[1])

    # Compute the coefficient r_F
    r = d / length(j["owner"]["display_name"])

    # Compute the Q-factor
    Q = r * (j["view_count"] * j["score"] + d) /
        (j["answer_count"]^2 - length(G("$n/comments")))

    return Q
end

গল্ফ সাহায্যের জন্য ডেনিস এবং মার্টিন বাটনারকে ধন্যবাদ!


নিস! কোন জায়গা আমি এটি পরীক্ষা করতে পারি?
কনর

@ কেওবিʀɪᴇɴ সেরা ফলাফলের জন্য আমি জুলিয়া ০.৪.০ (বর্তমানে সর্বশেষতম প্রকাশ) আপনার মেশিনে ইনস্টল করে স্থানীয়ভাবে চালানোর পরামর্শ দিচ্ছি। আপনি লাম্বদাটিকে একটি নাম দিতে পারেন f=n->...এবং f(16327)REPL তে জমা দিতে println(f(16327))পারেন বা যদি আপনি এটি কোনও .jlফাইল থেকে চালাচ্ছেন । এটি জুলিয়া 0.4.0-আরসি 2 সহ জুলিয়াবক্সে (একটি গুগল অ্যাকাউন্ট প্রয়োজন) কাজ করে তবে Requestsমডিউলটি পূর্বনির্মাণের সময় সতর্কতা দেয় ।
অ্যালেক্স এ।

3

গণিত 10, 381 বাইট

f=(a=StringTemplate["http://api.stackexchange.com/``````?site=codegolf"];j=Import[a["questions/",#,""],"JSON"];c=Import[a["questions/",#,"/comments"],"JSON"];r=Import[a["posts/",#,"/revisions"],"JSON"];N[#5/#6*(#1*#2+#5)/(#3^2-#4)]&@@j[[3,2,1,{5,2,12},2]]~Join~{Length@c[[3,2]],Length@DeleteCases[r[[3,2]],_?(("revision_type"/.#)=="vote_based"&)],StringLength@j[[3,2,1,3,2,6,2]]})&

সত্যিই তিনটি এপিআই ক্যোয়ারী এবং প্রচুর সূচী। সবচেয়ে শক্তিশালী অংশটি editsউপলব্ধ থেকে কীভাবে পাওয়া যায় তা বোঝার চেষ্টা করছিল revisions, আশা করি আমি এটি সঠিকভাবে পেয়েছি।


1
এটি ম্যাথেমেটিকা ​​৯-এ আমার পক্ষে কাজ করে না এটি বলছে যে StringTemplateযুক্তিটি অবৈধ a
অ্যালেক্স এ।

দুঃখিত, আমি শিরোনামে সংস্করণ নম্বর রাখতে ভুলে গেছি। সংশোধন করা হয়েছে!

সুতরাং এটি গাণিতিক 10 এর অনন্য বৈশিষ্ট্যের উপর নির্ভর করে?
অ্যালেক্স এ।

আপনি না থাকে StringTemplate10 আগের মত যতদূর আমি জানি। আপনি সেই অংশটি এর সাথে প্রতিস্থাপন করতে পারেন a=Function["http://api.stackexchange.com/"<>#1<>ToString[#2]<>#3<>"?site=codegolf"];এবং এটি কার্যকর হয় কিনা তা দেখতে পারেন।

2

পাইথন 2, 392 বাইট

ঠিক আছে, আমি এটি একটি শট দিয়েছি।

from requests import*;from re import*;l=len
def i(n):
 try:s,r="http://api.stackexchange.com/2.2/questions/%s?site=codegolf","http://codegolf.xyz/posts/%i/revisions"%n;q,c=s%n,s%('%i/comments'%n);i=get(q).json()['items'][0];m=float(l(findall("<span \S+n (\d+)",get(r).text)));r=m/l(i["owner"]["display_name"]);print r*(i["view_count"]*i["score"]+m)/(i["answer_count"]**2-m)
 except:print';-;'

অ্যালেক্সের জুলিয়া উত্তরের সাথে খুব অনুরূপ যুক্তি । আমি কোন প্রশ্নটি সবচেয়ে আদর্শ তা দেখতে এটি লুপ করতে চাই তবে আমি বরং ঘন ঘন ঘন্টার জন্য এপিআইকে কল করি না।


অনুরোধগুলি একটি তৃতীয় পক্ষের প্যাকেজ। কখন থেকে তাদের অনুমতি দেওয়া হয়েছিল।
পিপ্পারি

1
@ পিপ্পেরি যেহেতু সর্বদা অপরিবর্তিতভাবে ওপি কর্তৃক অনুমোদিত না হয়। বাহ্যিক সংস্থানগুলি ব্যবহার করা যা চ্যালেঞ্জটির ঠিক সমাধান দেয় ডিফল্টরূপে নিষিদ্ধ তবে এটি এখানে নেই।
অ্যালেক্স এ।

2

গ্রোভী, 459 457 বাইট

সুন্দর অনেকগুলি উত্তরগুলির মতো।

import groovy.json.JsonSlurper
import java.util.zip.GZIPInputStream
def f={n->def j,d,u={p->new JsonSlurper().parseText(new GZIPInputStream("http://api.stackexchange.com/2.2/questions/$p?site=codegolf".toURL().getContent()).getText()).items}
j=u(n)[0]
d=("http://codegolf.xyz/posts/$n/revisions".toURL().text=~/<span \S+n (\d+)/).getCount()
println((d/j.owner.display_name.length())*(j.view_count*j.score+d)/(j.answer_count**2-u("$n/comments").size()))}

Cᴏɴᴏʀ O'Bʀɪᴇɴ ধন্যবাদ 2 বাইট সংরক্ষণ করা!

Ungolfed:

import groovy.json.JsonSlurper
import java.util.zip.GZIPInputStream

def f = { n->

    def stackApi = "http://api.stackexchange.com/2.2"

    // Fetch json from stackexchange rest api
    def getItems = { pathParam ->
        //Stackexchange compresses data, decompress before parsing json
        def httpData = "$stackApi/questions/$pathParam?site=codegolf".toURL().getContent()
        def deCompressedData = new GZIPInputStream(httpData).getText()
        def json = new JsonSlurper().parseText(deCompressedData)
        return json.items
    }

    // Get the edit count from the html page
    def htmlPage = "http://codegolf.xyz/posts/$n/revisions".toURL()
    def editCount = (htmlPage.text=~/<span \S+n (\d+)/).getCount()

    // apply formula
    def json = getItems(n)[0]
    def r = editCount/json.owner.display_name.length()
    def Q = r * ( json.view_count * json.score + editCount) /
                (json.answer_count**2 - getItems("$n/comments").size())
    println(Q)
}

f(16327)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.