স্ট্যাক এক্সচেঞ্জ ভোট কাউন্টার


40

এমন একটি প্রোগ্রাম / ফাংশন লিখুন যা কার্যকর করার সময় তার নিজস্ব স্ট্যাক এক্সচেঞ্জের জবাব গণনা করে।

  • আপনার প্রোগ্রাম / ফাংশনটি ইন্টারনেট থেকে এই পৃষ্ঠায় ( কোডগল্ফ.স্ট্যাকেক্সেঞ্জার / কুইকশানস / 60২60০৯ ) অ্যাক্সেস করতে পারে :
  • আপনার প্রোগ্রাম / ফাংশন কোনও ব্যবহারকারীর ইনপুট গ্রহণ করতে পারে না এবং
  • ইউআরএল শর্টনার্স ব্যবহারের অনুমতি নেই
  • আপনার প্রোগ্রাম / ফাংশনটি কেবল তার নিজস্ব উত্সকে তার ভোট গণনার রেফারেন্স পয়েন্ট হিসাবে ব্যবহার করতে পারে (উদাহরণস্বরূপ: এটিতে থাকা উত্তরে কোনও পাঠ্যের রেফারিং স্ট্রিং নেই তবে নিজস্ব উত্সে নয়)
  • আপনার প্রোগ্রাম / ফাংশনটি অবশ্যই তার নিজস্ব ভোট গণনা এবং কেবল তার নিজস্ব ভোট গণনা আউটপুট করতে হবে (উদাহরণস্বরূপ: এই পৃষ্ঠায় সমস্ত ভোট গণনা ফেরত নেই)

এটি কোড-গল্ফ, সংক্ষিপ্ততম কোড জয়।


perl -e'($_)=`curl -s http://api.stackexchange.com/2.2/posts/123?site=codegolf`;/score":(\d+)/&&print$1'দেখে মনে হচ্ছে এটি কাজ করা উচিত, কিন্তু না। তবে কেউ এটি ব্যবহার করতে পারে।
msh210

7
প্রত্যেকের জন্য যারা এপিআই ব্যবহার করতে চেষ্টা করছেন এবং ব্যর্থ হচ্ছেন: এটি ক্লায়েন্ট সমর্থন না করলেও জিজপ এনকোডযুক্ত প্রতিক্রিয়া সরবরাহ করে।
ডেনিস

13
"আপনার প্রোগ্রাম / ফাংশনটি তার ভোটের গণনার রেফারেন্স পয়েন্ট হিসাবে কেবল তার নিজস্ব উত্স ব্যবহার করতে পারে" কিছুটা বিভ্রান্তিকর। এর অর্থ কি এই যে উত্তরগুলি কেবল নিজের কোডের জ্ঞান ব্যবহার করে এবং কোনও পোস্ট আইডির মতো কিছু না করে নিজের পরিচয় দেওয়ার চেষ্টা করা উচিত? আমি মনে করি না যে এই জাতীয় নিয়ম ভাল হবে, কারণ এটি অন্য যে কেউ নতুন উত্তর পোস্ট করে ভেঙে যেতে পারে।
FryAmTheEggman

@ ফ্রাইআম দ্য এজিগম্যান আমি অন্যান্য লোকদের উত্তরগুলি ভাঙ্গার জন্য কিছুটা চিন্তাভাবনা করেছি, এমনকি আমি এটিকে একটি KOTH হিসাবে বিবেচনা করেছি যেখানে আপনার উত্স অন্য উত্তরকে হ্রাস করার চেষ্টা করে, যদিও শেষ পর্যন্ত মনে হয়েছিল যে আমার চেয়ে বেশি ফর্ম্যাটটি চাপ দিচ্ছে ... using its own sourceউত্তরগুলি পোস্ট আইডি পদ্ধতিটি ব্যবহার না করে এমন ক্ষেত্রে, বাইট গণনা অবদান না রেখে নিজেকে সন্ধান করা আরও সহজ করার জন্য ব্যবহারকারীদের পৃষ্ঠাটি সেট আপ করা থেকে বিরত রাখতে আমি কিছুটা যুক্ত করেছি।
ডেনড্রোবিয়াম

2
ঠিক আছে, শব্দটি কিছুটা অদ্ভুত। আমি এইভাবে কিছু আচরণের অনুমতি দেওয়ার পরিবর্তে সুপারিশ করব, পরিবর্তে স্ট্যাকেক্সচেঞ্জের সরবরাহকৃত কোনও ওয়েব পরিষেবাদি ব্যবহার করা নিষিদ্ধ করুন (যদি না আমি আপনাকে ভুল বুঝি)। পার্শ্ব নোট হিসাবে, সম্পূর্ণতা সমস্যার প্রকৃতির কারণে, এই অবিচ্ছেদ্য কিছু তৈরি করা সম্ভব নয়। আপনি যা করতে পারেন তা হ'ল ভাঙা অবর্ণনীয় make
FryAmTheEggman

উত্তর:


39

jQuery + জাভাস্ক্রিপ্ট, 85 বাইট

$.get("//api.stackexchange.com/posts/82610?site=codegolf",d=>alert(d.items[0].score))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

ইতিহাস

  • -6 বাইট কারণ আমি dataপরিবর্তে var ব্যবহার করছিলাম d
  • -3 বাইটস @ এমশ 210 কে ধন্যবাদ
  • -13 বাইটস @ CᴏɴᴏʀO'Bʀɪᴇɴ ধন্যবাদ
  • -4 বাইটস @ ইউজার 6188402 ধন্যবাদ
  • -5 বাইট @ স্যুভারকে ধন্যবাদ
  • -৪ বাইট @ রবকে ধন্যবাদ

প্রস্তাবিত ব্যবহার

  • স্নিপেট চালান।
  • ভোট দিন।
  • স্নিপেট চালান, এবং সংখ্যাটি যাদুতে বাড়ার সাথে সাথে অবাক হন।

বোনাস!!

কে বোনাস পছন্দ করে না?

$.getJSON("//api.stackexchange.com/posts/" + prompt() + "?site=codegolf",d=>alert(d.items[0].score));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

বোনাসে আইডি লিখুন এবং এটি আপনাকে স্কোর বলতে দেবে।

আরও বোনাস !! প্রোগ্রামটি স্বয়ংক্রিয়ভাবে চালনার জন্য এই স্নিপেটটি চালান , upvote করুন এবং আবার চালান! (Rep> 15, auth প্রয়োজন)। যদি এটি কাজ না করে, দয়া করে আমাকে বলুন।


2
postsপরিবর্তে answersএবং httpপরিবর্তে httpsতিনটি বাইট সংরক্ষণ করুন (বা সম্ভবত আপনি http:পুরোপুরি বাদ দিতে পারেন ?)। (স্বীকৃত।)
এমএস 210

2
আপনি ব্যবহার করতে পারেন http://এবং এটি 301 https://এখনও আরও ভালভাবে পুনঃনির্দেশিত হবে , কেবলমাত্র পুরোপুরি //api.stackexchange.com...
এইচটিপিটি

8
jQuery কোনও ভাষা নয়, জেএস-এ কোনও অন্তর্নির্মিত গ্রন্থাগারও নয়। সুতরাং আপনি যদি এটি ব্যবহার করে থাকেন তবে আপনার স্কোরের jQuery এর বাইট গণনাও অন্তর্ভুক্ত করুন।
অপটিমাইজার

10
@ অপ্টিমাইজার: এটি করার উপযুক্ত উপায়: জেএস + জিকুয়েরিকে কার্যকরভাবে তার নিজস্ব "ভাষা" হিসাবে বিবেচনা করুন। এই মেটা পোস্টটি দেখুন: meta.codegolf.stackexchange.com/a/9279/12914
এল'েন্ডিয়া স্টারম্যান

3
$.getপরিবর্তে ব্যবহার করুন $.getJSON। এপিআই-এর সামগ্রীর ধরণ হ'ল application/json, এবং jQuery স্বয়ংক্রিয়ভাবে প্রতিক্রিয়াটিকে JSON হিসাবে বিবেচনা করবে।
রব ডাব্লু

24

জাভাস্ক্রিপ্ট ES6, 107 বাইট

fetch`//api.stackexchange.com/posts/82672?site=codegolf`.then(r=>r.json()).then(b=>alert(b.items[0].score))

রিয়েল প্রোগ্রামাররা ব্যবহার করে না XMLHttpRequest। রিয়েল প্রোগ্রামাররা ফেচ এপিআই ব্যবহার করে ।


1
আচ্ছা ... আপনি আমাকে সেখানে পেয়েছেন। আমি এই এপিআই সম্পর্কে জানতাম না!
কনর ও'ব্রায়ান

আমি একটি ত্রুটি পেয়েছি যা fetchসংজ্ঞায়িত হয়নি
অ্যান্টনি ফ্যাম

1
@ পাইথনমাস্টার ফেচ এপিআই এখনও সমস্ত ব্রাউজারে উপলভ্য নয়: caniuse.com/#feat=fetch
জর্দান

21

বাশ, 80 79 75 69 বাইট

w3m api.stackexchange.com/posts/82616?site=codegolf|tr ,: \\t|cut -f20

স্কোরিং উদ্দেশ্যে, \tএকটি ট্যাব অক্ষর দিয়ে প্রতিস্থাপন করা উচিত।

এটির প্রয়োজন w3m, যা বেশিরভাগ লিনাক্স ডিস্ট্রোজে ডিফল্টরূপে উপলব্ধ।

-২ বাইটের জন্য @ ননওআইনে এখানে ধন্যবাদ!

কিভাবে এটা কাজ করে

w3mএকটি কমান্ড-লাইন ওয়েব ব্রাউজার। এটি ইউআরএল অনুসন্ধান করে এবং (সাধারণত) পাঠ্যযোগ্য ফর্ম্যাটে এর সামগ্রী প্রদর্শন করে। এখানে, আমরা শুধু (AB) এটি ব্যবহার কল এড়াতে করার zcatযে curl, করতে হবে যেহেতু দঃপূঃ এপিআই প্রতিক্রিয়া gzip,-কম্প্রেস স্থল।

tr ,: \^Iসমস্ত কমা এবং কলোনগুলি ট্যাবগুলির সাথে প্রতিস্থাপন করে, যা cutএর ডিফল্ট ক্ষেত্রের সীমানাঙ্কক হয়।

অবশেষে, cut -f20বিংশতম ক্ষেত্র ব্যতীত সমস্ত কিছুই সরিয়ে দেয়, যা ভোট গণনা।


বা --compressed, যা এর চেয়েও দীর্ঘ zcat
নিল

9

জাভাস্ক্রিপ্ট ES6, 175 165 160 145 বাইট

অপ্টিমাইজার এবং ডেন্ড্রোবিয়ামের জন্য লোটাস বাইটস সংরক্ষিত! এরা সবাই পাঁচজনের গুণ!

প্লেইন ওল 'জাভাস্ক্রিপ্ট ব্যবহার করে। এই নতুন কাঠের গ্রন্থাগার কার দরকার? রিয়েল প্রোগ্রামাররা ব্যবহার করেXMLHttpRequest()

with(new XMLHttpRequest)send(open("get","//api.stackexchange.com/posts/82614?site=codegolf"),onload=_=>alert(response.match(/re..([0-9]+)/)[1]))

এটি পরীক্ষা করে দেখুন

alert=x=>o.innerHTML=x;

with(new XMLHttpRequest)send(open("get","//api.stackexchange.com/posts/82614?site=codegolf"),onload=_=>alert(response.match(/re..([0-9]+)/)[1]))
*{font-family:Consolas,monospace;}
<div id=o></div>


@ অপ্টিমাইজার ধন্যবাদ! তবে কেন ব্যবহার করবেন prompt?
কনর ও ব্রায়ান

@ অপ্টিমাইজার কোনও কারণে, "g"আমার পক্ষে বিকল্প হিসাবে কাজ করে না।
কনর ও ব্রায়ান

with(new XMLHttpRequest)(open("get","//api.stackexchange.com/2.2/posts/82614?site=codegolf"),onload=_=>alert(response.items[0].score),send(responseType="json"))-5 বাইটের জন্য
ডেনড্রোবিয়াম

@ ডেনড্রোবিয়াম ওহ, খুব সুন্দর। আমি ভুলে গিয়েছিwith
কনার ও'ব্রায়ান

@ অপ্টিমাইজারটি পেয়েছিTypeError: response.split(...)[12] is undefined",
ও'ব্রায়ান

7

bash + jq , 69 বাইট

w3m api.stackexchange.com/posts/82615?site=codegolf|jq .items[].score

আমি আগে curlএবং ব্যবহার করেছি zcat; w3mডেনিসের (আকর্ষণীয়ভাবে অনুরূপ) উত্তর দ্বারা অনুপ্রাণিত হয়। এটি দেখা যাচ্ছে jqএবং tr/ cutএকই বাইট ব্যয় আছে!


6

উত্তল 0.5, 63 বাইট

0000000: 22 d1 2e 46 91 32 e5 69 5d b2 66 81 12 a4 8d d1  "..F.2.i].f.....
0000010: 27 40 b5 32 47 68 97 2c b9 5c 22 05 16 49 10 31  '@.2Gh.,.\"..I.1
0000020: 44 9e f3 0a 6a 16 b0 68 91 93 35 0b 96 dc 91 0a  D...j..h..5.....
0000030: 3c 18 80 22 dc 67 27 3c 2f 32 36 39 3d 37 3e     <..".g'</269=7>

এটি API এর পরিবর্তে অনুসন্ধান পৃষ্ঠা থেকে স্কোরটি পুনরুদ্ধার করে, বিশেষত https://codegolf.stackexchange.com/search?q=inquies:82714 কোয়েরি থেকে । ভাগ্যক্রমে, inquestionউত্তর জন্য কাজ করে।

প্রতিপাদন

$ echo $LANG
en_US
$ cat gen.convex
"codegolf.stackexchange.com:80/search?q=inquestion:82714"Ö`"Üg'</269=7>"
$ java -jar Convex/out/builds/convex-0.5/convex/convex.jar gen.conv > count.conv
$ cksum count.conv
2414634109 63 count.conv
$ java -jar Convex/out/builds/convex-0.5/convex/convex.jar count.conv
1

কিভাবে এটা কাজ করে

"..."Ü           e# Use the built-in string compression to push
                 e# "codegolf.stackexchange.com:80/search?q=inquestion:82714".
      g          e# Retrieve the HTML page at that URL.
       '</       e# Split at occurrences of '<'.
          269=   e# Select the chunk at index 269.
                 e# This pushes "strong>", followed by the vote count.
              7> e# Discard the leading seven characters.

এটা চমৎকার. আপনি কীভাবে জানলেন যে এই ভাষা এটি করতে পারে?
আদনান

3
এটি সিজেএম কাঁটাচামচ। আমি প্রথমে আমার উত্তরটি সিজেমে লিখেছিলাম (67 বাইট), কিন্তু তখন আমি মনে করেছি যে উত্তলটি স্ট্রিং সংকোচনের মধ্যে অন্তর্নির্মিত ছিল।
ডেনিস

5

05 এ বি 1 ই , 89 87 81 বাইট

ধন্যবাদ পাইথন ...

•1Ö8•D’£Ø ˆå§¾.‡¢ as g;#.¾¿„–(g.ˆåƒÛ('·Ç://ƒËŠˆ.‚‹º.ŒŒ/…é/ÿ/').‚Ø())’.er¡14èžz£þ

সিপি -1222 এনকোডিং ব্যবহার করে ।


4

ম্যাটল্যাব, 103 বাইট

g=@getfield;g(g(webread('http://api.stackexchange.com/2.2/posts/82611?site=codegolf'),'items'),'score')

4

জাভাস্ক্রিপ্ট (Node.js + Unirest ), 123 বাইট

require("unirest").get("http://api.stackexchange.com/posts/82683?site=codegolf").end(x=>console.log(x.body.items[0].score))

আমি এই লাইব্রেরিটি পছন্দ করি কারণ এটি স্বয়ংক্রিয়ভাবে জেএসএনকে পার্স করে।


4

জুলিয়া, 128 107 বাইট

using Requests
f()=split(readall(get("http://api.stackexchange.com/posts/82621?site=codegolf")),r":|,")[20]

এটি এমন একটি ফাংশন যা কোনও ইনপুট নেয় না এবং এই পোস্টের স্কোরটিকে স্ট্রিং হিসাবে ফিরিয়ে দেয়। এটি Requestsপ্যাকেজ ইনস্টল করা প্রয়োজন।

কিভাবে এটা কাজ করে:

  • get এসই এপিআইতে একটি জিইটি অনুরোধ করে
  • readall প্রতিক্রিয়াতে কাঁচা বাইটগুলি পড়ে এবং একটি স্ট্রিং দেয়
  • split স্ট্রিংটি কলোন এবং কমাতে বিভক্ত করে
  • ফলাফলের অ্যারের 20 তম উপাদানটি হ'ল পোস্টের স্কোর

ডেনিসকে 21 বাইট সংরক্ষণ করা!


4

জাভাস্ক্রিপ্ট (নোড.জেএস), 166 বাইট

-1 বাইট কারণ @ সিও'বা আমাকে কীভাবে গণনা করতে শিখিয়েছে;)

-4 বাইটস @ নন আইইনহেইরে ধন্যবাদ

require("http").get("http://api.stackexchange.com/posts/82620?site=codegolf",a=>a.on("data",d=>console.log(JSON.parse(require("zlib").gunzipSync(d)).items[0].score)))

এটি কিছুটা বিব্রতকর। আপনার এপিআই জিজেপিংয়ের জন্য এসই ডাং! / সেকেন্ড

কোন উন্নতি খুব স্বাগত।


3

পিএইচপি, 137 বাইট

অনেকটাই অকপট. সঙ্কোচনকারী অনেকগুলি বাইট নেয়:

<?=json_decode(gzinflate(substr(file_get_contents('http://api.stackexchange.com/2.2/posts/82619?site=codegolf'),10)),1)[items][0][score];

Ungolfed

print
  json_decode(
    gzinflate(
      substr(
        file_get_contents('http://api.stackexchange.com/2.2/posts/82619?site=codegolf'),
        10
      )
    ),
    1
  )
  [items][0][score];

2

পিএইচপি, 121 বাইট

এপিআই ছাড়াই।

<?php preg_match('/t ">(.*)/',file_get_contents('http://codegolf.stackexchange.com/posts/82799/ajax-load'),$v);echo$v[1];

পুরো পোস্টটি পায় এবং রেগেক্সের মাধ্যমে ভোট গণনাগুলি বের করে। (রিজেক্সের সাহায্যে এইচটিএমএল বিশ্লেষণ করবেন না!)

Ungolfed:

<?php
   preg_match('/t ">(.*)/',
              file_get_contents('http://codegolf.stackexchange.com/posts/82799/ajax-load'),
              $v);

   echo $v[1];

আপনি কি সরাতে পারবেন http:?
নন ইনিহির

@ না ওন না, তখন কাজ করবে না।
নিকেল

1

05 এ বি 1 ই , 45 বাইট

•2íЕ’¸¸.‚‹º.ŒŒ/„¤/ÿ?€¼=ƒËŠˆ’žYì.w'ŒÂ¡θ',¡нþ

পুরো প্রোগ্রামটির জন্য কোনও টিআইও নেই, কারণ .wইন্টারনেট অ্যাক্সেস করার জন্য বিল্টইন টিআইওতে কাজ করে না।

ব্যাখ্যা:

আমরা ইউআরএল তৈরি করে এবং এটি অ্যাক্সেস করে শুরু করি:

2íЕ       # Push compressed integer 190437 (the id of this answer)
  ’¸¸.‚‹º.ŒŒ/„¤/ÿ?€¼=ƒËŠˆ’
            # Push dictionary string "api.stackexchange.com/posts/ÿ?site=codegolf",
            # where the `ÿ` is automatically filled with the 190437
    žY      # Push builtin "https://"
      ì     # And prepend it in front of the string
.w          # Go to this website, and get all its contents

এটি অনলাইনে চেষ্টা করুন (ছাড়া .w)।

এর পরে, আমরা জেএসএন থেকে স্কোরটি বের করব:

'ŒÂ        '# Push dictionary string "score"
   ¡        # Split the website content on this
    θ       # Only leave the last item (of the two)
     ',¡   '# Split this string on ","
        н   # And this time leave the first item (i.e. `":10`)
         þ  # Only leave the digits of this string
            # (which is output implicitly as result)

এটি অনলাইনে চেষ্টা করুন।

এই দ্বিতীয় অংশের জন্য একটি সমান 10- বাইট বিকল্প হতে পারে:

„ŒÂ‚¡       # Push dictionary string "score after"
     #      # Split it on spaces: ["score","after"]
      ¡     # Split the website content on these
       Ås   # Only leave the middle element
         þ  # Only leave the digits of this string
            # (which is output implicitly as result)

এটি অনলাইনে চেষ্টা করুন।

(বিভাগে আমার এই 05AB1E ডগা দেখুন কিভাবে অভিধান? ব্যবহার করতে এবং কিভাবে বড় পূর্ণসংখ্যার কম্প্রেস কিভাবে? ) কেন বুঝতে •2íЕহয় 190437, ’¸¸.‚‹º.ŒŒ/„¤/ÿ?€¼=ƒËŠˆ’হয় "api.stackexchange.com/posts/ÿ?site=codegolf", 'ŒÂহয় "score", এবং „ŒÂ‚¡হয় "score after"

পিএস / সম্পাদনা: আমি বুঝতে পারি যে ব্যবহার করে þআমি কখনই নেতিবাচক স্কোর পাব না। ;)

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