उन्नीसवीं बाइट में सबसे अधिक सितारे किसके हैं?


16

नोट: इस चुनौती में HTML वेबपृष्ठों के माध्यम से डाउनलोड करना और स्थानांतरण शामिल है। यदि आपकी भाषा इसे संभाल नहीं सकती है तो आप इस चुनौती में भाग नहीं लेना चाहते हैं।

परिचय

उन्नीसवीं बाइट चैट में हमेशा चर्चा होती है कि स्टारबोर्ड का नेतृत्व कौन करता है। तो, हर किसी को चैट में प्रति उपयोगकर्ता तारों की कुल मात्रा को गिनने और उनकी मदद करने देता है।

चुनौती

एक सकारात्मक पूर्णांक को देखते हुए Nजो शून्य से अधिक है, Nचैट में अंतिम तारांकित संदेशों के स्टारबोर्ड के नेता (ओं) की गणना करें । इन संदेशों को यहां देखा जा सकता है । संकेत: प्रत्येक पृष्ठ में 50 तारांकित संदेश हैं। आउटपुट तारांकित संदेशों की मात्रा से शीर्ष 5 उपयोगकर्ताओं की एक सूची होगी । यदि आप उन उपयोगकर्ताओं के उपयोगकर्ता नाम प्रदर्शित कर सकते हैं तो आपके बाइट काउंट से -15% का बोनस प्रदान किया जाएगा, लेकिन यदि आप केवल उपयोगकर्ता आईडी नंबर प्रदर्शित करते हैं तो कोई जुर्माना नहीं दिया जाएगा। कृपया ध्यान दें कि कुछ तारांकित संदेशों में अपवित्रता है। यदि आप इस प्रकार की भाषा के प्रति संवेदनशील हैं, तो सावधानी के साथ पृष्ठ देखें।

उदाहरण (इमेज इस चुनौती को लिखने के रूप में वर्तमान स्टारबोर्ड है):

यहाँ छवि विवरण दर्ज करें

  • (RED) इनपुट: 5आउटपुट (बोनस के साथ):[Geobits Sp3000 PhiNotPi Seadrus]
  • (BLUE) इनपुट: 10आउटपुट (बोनस के बिना):[51024 17335 24697 116494 129255]
  • (ग्रीन) इनपुट: 14आउटपुट (बोनस के बिना):[51024 116494 141697 17335 24697]

अतिरिक्त सामान:

शीर्ष 5 में टाईज़ को सबसे कम उपयोगकर्ता आईडी नंबर से क्रमबद्ध किया जाएगा । यदि पांच से कम उपयोगकर्ता हैं, तो अंत में खाली स्लॉट के साथ लीडरबोर्ड का उत्पादन करें । इनपुट और आउटपुट किसी भी प्रारूप में हो सकते हैं। आउटपुट को पूंजीकृत करने की आवश्यकता नहीं है। यदि इनपुट से अधिक है 50, तो आपको अभी भी पेज 2, पेज 3, आदि पर संदेशों को गिनना होगा। आप मान सकते हैं कि इनपुट हमेशा चालू रहेगा 2^31, और यह भी इतना बड़ा नहीं होगा कि यह 1) तारांकित संदेशों की मात्रा से बड़ा हो वहाँ है और 2) कार्यक्रम (दुर्घटना करने के लिए बड़े, स्मृति से बाहर चला आदि) बनाकर दुर्घटना नहीं होगा।

यह , बाइट्स जीत में सबसे छोटा कोड!


लीडरबोर्ड

यहां एक नियमित लीडरबोर्ड और भाषा के अनुसार विजेताओं का अवलोकन करने के लिए एक स्टैक स्निपेट है।

यह सुनिश्चित करने के लिए कि आपका उत्तर दिखाई दे रहा है, कृपया अपना उत्तर शीर्षक मार्कडाउन टेम्पलेट का उपयोग करके शीर्षक के साथ शुरू करें:

## Language Name, N bytes

Nआपके सबमिशन का आकार कहां है। यदि आप अपने स्कोर में सुधार करते हैं, तो आप पुराने अंकों को हेडलाइन में रख सकते हैं , उनके माध्यम से स्ट्राइक करके। उदाहरण के लिए:

## Ruby, <s>104</s> <s>101</s> 96 bytes

यदि आप अपने हेडर में कई संख्याओं को शामिल करना चाहते हैं (जैसे कि आपका स्कोर दो फ़ाइलों का योग है या आप दुभाषिया ध्वज दंड को अलग से सूचीबद्ध करना चाहते हैं), तो सुनिश्चित करें कि हेडर में वास्तविक स्कोर अंतिम संख्या है:

## Perl, 43 + 2 (-p flag) = 45 bytes

आप भाषा के नाम को एक लिंक भी बना सकते हैं जो लीडरबोर्ड स्निपेट में दिखाई देगा:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes

var QUESTION_ID=62182,OVERRIDE_USER=36670;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"http://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>


3
धन्यवाद। मैं थोड़ी देर के लिए इस बारे में बहुत उत्सुक हूं, और यह पता लगाने के लिए कुछ लिखने से परेशान नहीं होना चाहता। अब अन्य लोग मेरे लिए करेंगे :)
ज्योबिट्स

11
इससे पहले कि कोई पूछे, चैट में आधिकारिक एपीआई नहीं है।
एलेक्स ए।

क्या URL को बाइट काउंट में गिनना है? बस ध्यान दिया जाता है कि TeaScript / JavaScript में क्रॉस-ऑरिजनल रिसोर्स शेयरिंग के मुद्दे होंगे
ओरिजिनल होंगी

1
@ V @ यह समझना मुश्किल होगा कि कौन से वर्णों को हटाना है जो कि url का हिस्सा हैं, क्या आपको लगता है कि हर कोई 70 अक्षर (लगभग url की लंबाई) को हटाने की अनुमति देगा जिससे इस समस्या में मदद मिलेगी?
GamrCorps

1
मुझे इस अतीत में अमर कर दिया गया है: डी
कॉनर ओ'ब्रायन

जवाबों:


11
  • मुझे धीमे होने का बहुत अफ़सोस है, लेकिन कोडिंग संदेशों को पढ़ना, जबकि कोडिंग बहुत प्रफुल्लित करने वाला और परिश्रमी था, इससे मेरा मूड एक महीने तक बना रह सकता था।

  • संपादित करें: हाँ, मैंने पाया, टाई और डुप्लिकेट आईडी मुद्दे दोनों सामंजस्यपूर्ण रूप से तय किए गए हैं। चाल यह है कि पुराने कोड तारों की अवरोही संख्या द्वारा उपयोगकर्ता-आईडी को क्रमबद्ध करते हैं, इसलिए मैंने अपने कार्यक्रम की कुछ पंक्तियों को इस तरह से मोड़ दिया कि यह उपयोगकर्ताओं को 99-एन ° _stars के अनुसार क्रमबद्ध करता है; चूंकि 99 शीर्ष हिट स्टार-कैप (उम्मीद है - मैंने मान लिया) की तुलना में बड़ा है, सितारों की बढ़ती संख्या के परिणामस्वरूप परिणाम को एक पत्थर से दोनों पक्षियों को मारता है, आरोही उपयोगकर्ता-आईडी के साथ उतरते सितारे।

BrownRecluse ,बिना बोनस = 536 बोनस के साथ = 551-15% = 468 बी

U=New(URL);P=New(Parser);L=New(Stack);t=New(Stack);v='http://chat.stackexchange.com/rooms/info/240/the-nineteenth-byte?tab=stars&page=';j=input();a=0;for i=1to j\50+1do begin U.Location=v+i;U.get;P.Parse(U.Data);x=New(RegEx);x.Data=U.Data;x.Mask='users/(\d*)/(\S*)".*?"times">(\d*?)<';while(x.Match)and(a<j)do begin L.Push(Format('%3d%9s%s',[99-x.Value[3],x.Value[1],x.Value[2]]));a=a+1;end;end;L.sort;i=0;for each L as y do if(not y.empty)and(not t.find(y.right(y.Length-12)))and(i<5)then begin y.delete(1,12);i=i+1;t.push(y);end;output(t.join(' '));

इनपुट

60

उत्पादन

mego rainbolt alex-a lembik v

इनपुट

90

उत्पादन

aditsu mego rainbolt alex-a lembik

टिप्पणियाँ

  • यह कार्यक्रम (बोनस सहित) यूनिकोड वर्णों का समर्थन नहीं करता - मुझे क्षमा करें V)!

  • यह कार्यक्रम मानक सुविधा के आधार पर काम करता है जिसमें प्रत्येक पृष्ठ में डिफ़ॉल्ट रूप से लगभग 50 तारांकित संदेश होते हैं।

  • स्पष्ट रूप से देखें कि 60 और 90 संदेश पहले दो पृष्ठों में निहित हैं, जबकि आउटपुट अलग-अलग हैं।

  • यह इस प्रोग्रामिंग लैंग्वेज का डाउनलोड पेज है, यदि यह आपके अधिकार में नहीं है

  • यदि आवश्यक हो, तो यह 485 बी का बोनस रहित कार्यक्रम है

    U=New(URL);P=New(Parser);L=New(Stack);t=New(Stack);v='http://chat.stackexchange.com/rooms/info/240/the-nineteenth-byte?tab=stars&page=';j=input();a=0;for i=1to j\50+1do begin U.Location=v+i;U.get;P.Parse(U.Data);x=New(RegEx);x.Data=U.Data;x.Mask='users/(\d*)/(\S*)".*?"times">(\d*?)<';while(x.Match)and(a<j)do begin L.Push(Format('%3d%9s',[99-x.Value[3],x.Value[1]]));a=a+1;end;end;L.sort;i=0;for each L as y do if(not y.empty)and(not t.find(y.right(y.Length-3)))and(i<5)then begin y.delete(1,3);i=i+1;t.push(y);end;output(t.join(' '));
    

इनपुट

60

उत्पादन

169713    107051    141888     94625    116494

इनपुट

90

उत्पादन

50454    169713    107051    141888     94625

अगर परिणाम के बीच असमानता थी तो मेरा कोड दोष नहीं ले रहा है!


1
alex-aआउटपुट में दो एस क्यों हैं ?
feersum

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