आप कैसे हैं?


20

मार्टिन ने एक अच्छा स्निपेट बनाया है जिसका उपयोग चुनौतियों के जवाब के लिए स्कोर का ट्रैक रखने के लिए किया जा सकता है। यह बहुत अच्छा है और सभी, लेकिन यह बेहतर नहीं होगा यदि आप इसे स्वयं ट्रैक कर सकते हैं?

एक प्रोग्राम बनाएं जो बाइट काउंट की तुलना अपने आप में इस प्रश्न के बाकी उत्तरों के साथ करता है, और "मैं उत्तर संख्या n हूं" देता हूं।

नियम:

  • अपने स्वयं के उत्तर में बाइट गिनती कोड में हार्डकोड किया जा सकता है

  • फ़ंक्शन इनपुट के रूप में url ले सकता है, या इसे हार्डकोड किया जा सकता है। Url के लिए चार्ट बाइट काउंट की ओर नहीं गिरेगा, इसलिए url-shortener का उपयोग करना आवश्यक नहीं है।

  • url- उत्तरों का पता हार्डकोड नहीं किया जा सकता

  • उत्तरों के लिए स्कोर हेडर से प्राप्त किया जा सकता है, (उसी तरह मार्टिन का स्निपेट करता है)।

  • उत्तर शीर्ष लेख में सही प्रारूप (नीचे वर्णित) होना चाहिए।

  • यदि कार्यक्रम ऑनलाइन चलाना संभव है, तो कृपया एक ऑनलाइन कंपाइलर (या एक कोड स्निपेट जिसे उत्तर से निष्पादित किया जा सकता है) के लिए एक लिंक साझा करें। यदि यह संभव नहीं है, तो कृपया फ़ंक्शन को कॉल करने का तरीका दिखाएं, और अपने स्वयं के कंपाइलर से आउटपुट दिखाएं (जिस समय आपने उत्तर पोस्ट किया था। आपको इसे तब तक अपडेट करने की आवश्यकता नहीं है जब तक आप निश्चित रूप से नहीं चाहते हैं)।

  • आपको वास्तव में इस प्रश्न के अन्य उत्तरों के साथ उत्तर की तुलना करनी होगी। बस I'm answer number 1.किसी भाषा में स्क्रिप्ट लिखना कानूनी नहीं है।

  • यदि अन्य उत्तरों में आपके स्वयं के समान बाइट्स की संख्या है, तो आप चुन सकते हैं कि आप उनमें से सबसे अच्छे या खराब होना चाहते हैं।

शीर्षलेख को स्वरूपित किया जाना चाहिए:

# Language Name, N bytes

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

आउटपुट होना चाहिए I'm answer number n., जहां संख्या nस्थिति है (अनुगामी newline / रिक्त स्थान ठीक हैं)। तो, सबसे छोटा उत्तर आउटपुट होगा: "मैं उत्तर संख्या 1 हूं।", दूसरा "मैं उत्तर संख्या 2 हूं।" आदि।

यह कोड गोल्फ है, इसलिए बाइट्स में सबसे छोटा जवाब जीत जाएगा।


यदि अन्य उत्तरों में आपके स्वयं के समान बाइट्स की संख्या है, तो आप चुन सकते हैं कि आप उनमें से सबसे अच्छे या खराब होना चाहते हैं। हो सकता है कि पोस्ट की तारीख एक टाई-ब्रेकर होनी चाहिए, इसलिए आपके पास एक ही नंबर होने का दावा करने वाले दो उत्तर नहीं हैं। या, आप मानक का उपयोग कर सकते हैं कि यदि वे बंधे हैं, तो वे दोनों उच्च स्थान के लिए बंधे हैं।
mbomb007 16

2
मुझे यकीन नहीं है कि यह काम करने वाला है। अधिकांश (अच्छे) ऑनलाइन दुभाषिए अन्य वेबपृष्ठों को कर्लिंग करने की अनुमति नहीं देते हैं, लेकिन चुनौती में यह कहते हैं कि कोड को ऑनलाइन दुभाषिया पर चलना होगा।
एक स्पेगेटो

आइए इस बारे में बात करते हैं चैट में।
एक स्पेगेटो

क्या URL के आसपास के किसी भी उद्धरण की गणना करने की आवश्यकता है? कुछ जवाब वर्तमान में उन्हें गिनती से बाहर करते हैं, अन्य उन्हें शामिल करते हैं।
hvd

जवाबों:


2

पर्ल, 107 बाइट्स

use LWP;print"I'm answer number ",1+grep($_<107,LWP::UserAgent->new->get('http://codegolf.stackexchange.com/q/60204')->content=~/<h1>.+, (\d+)/g),'.';

थोड़ा कम गोल्फ:

use LWP;
$agent = new LWP::UserAgent();
$response = $agent->get('http://codegolf.stackexchange.com/q/60204');
@answers = $response->content =~ m/<h1>.+, (\d+)/g;
print "I'm answer number ", 1+grep($_<107, @answers), '.';

नमूना उपयोग

$ perl my_rank.pl
I'm answer number 1.

7

पायथन 2, 145 बाइट्स

from requests import*
print"I'm answer number %s."%(sorted([int(a["body"].split(",")[1].split()[0])for a in get('http://api.stackexchange.com/2.2/questions/60204/answers?pagesize=99&order=desc&sort=activity&site=codegolf&filter=!SWJ_BpAceOT6L*G2Qa').json()["items"]]).index(145)+1)

2015-10-10 17:30:00 UTC से आउटपुट:

I'm answer number 1.

मैंने अपने स्कोर के लिए किसी भी URL की गणना नहीं की है, अगर मुझे इस पर टिप्पणी करनी चाहिए कि मुझे इसे कितना जोड़ना चाहिए। इसमें अपना स्कोर हार्डकोड किया गया है, यह मानता है कि यह पहले से ही पोस्ट किया गया है। अगर कभी 99 से अधिक उत्तर पोस्ट किए जाते हैं तो टूट जाएगा।


6

ऑटो इट, 175 बाइट्स

(202 बाइट्स - 27 URL के लिए)

#include<String.au3>
$0=_StringBetween
$1=1
For $2 In $0(BinaryToString(InetRead("http://q.codegolf.xyz/60204")),'<h1>',' b')
$1+=$0($2,', ','')[0]<175?1:0
Next
ConsoleWrite("I'm answer number "&$1&".")

2015-10-09 17:47:00 UTC से आउटपुट:

I'm answer number 1.

मैंने कभी ऑटोल्ट के बारे में नहीं सुना है, लेकिन यह सही है कि अगर भाषा का नाम इसमें कॉमा है तो यह काम नहीं करेगा? (मुझे नहीं पता कि ऐसी कोई भाषा है, इसलिए मुझे यकीन नहीं है कि यह मायने रखता है)
स्टिव ग्रिफ़िन

@StewieGriffin हाँ, लेकिन मुझे इसमें कॉमा के साथ कोई भी भाषा याद नहीं है; ;-) अगर कोई आता है तो मैं इसे बदल दूंगा।
म्यान्कोमा m

@minxomat नाम ऐसा लग रहा है जैसे इसके lबजाय एक है I, इसलिए मैंने इसे गलत समझा । एकमात्र कारण मुझे एहसास हुआ कि यह विकिपीडिया लेख है , जिसमें एक सेरिफ़ है।
mbomb007

बस किसी को इंतजार है कि उसमें अल्पविराम के साथ एक भाषा का आविष्कार किया जाए, इस उत्तर को तोड़फोड़ करने के लिए ...
डारेल हॉफमैन

@DarrelHoffman खैर, इसे एक अल्पविराम और एक स्थान में लगातार नाम देना होगा ^ ^
mınxomaı

4

जावास्क्रिप्ट (ईएस 7), 149 बाइट्स

283 बाइट्स - URL के लिए 134। मैंने पहले कभी HTTP अनुरोधों का उपयोग नहीं किया है, लेकिन यहाँ जाता है ...

x=z=>alert(`I'm answer number ${[for(y of z.items)y.body.match(/, (\d+)/)[1]].sort().indexOf("149")+1}.`);document.write('<script src="//api.stackexchange.com/2.2/questions/60204/answers?pagesize=100&order=desc&sort=votes&site=codegolf&filter=!--pn9sqW9y0T&callback=x">\x3C/script>')

फ़ायरफ़ॉक्स 41 में सफलतापूर्वक परीक्षण किया गया।

पहले यह अपने बाइट-काउंट को खोजने के लिए सभी उत्तरों के हेडर के माध्यम से देखता है, फिर यह बाइट-काउंट के साथ पहला स्थान पाता है 243 149 के । यह वर्तमान में केवल पहले 100 उत्तरों की जांच करने के लिए सेट किया गया है, और यदि कोई 100 के नीचे आता है तो यह टूट जाएगा बाइट्स, लेकिन यह अभी के लिए काम करता है। ;)

बहुत छोटी तकनीक के लिए @GeorgeReith का धन्यवाद । AJAX (243 बाइट्स) का उपयोग कर पुराना संस्करण:

x=new XMLHttpRequest,x.onreadystatechange=_=>{if(x.readyState==4&&x.status==200)alert(`I'm answer number ${[for(y of JSON.parse(x.responseText).items)y.body.match(/, (\d+)/)[1]].sort((a,b)=>a-b).indexOf("243")+1}.`)},x.open("GET","//api.stackexchange.com/2.2/questions/60204/answers?pagesize=100&order=desc&sort=votes&site=codegolf&filter=!--pn9sqW9y0T",!0),x.send()

अच्छा लग रहा है ... हालांकि संभवतः टूट जाएगा अगर कोई अन्य 151 बाइट उत्तर पोस्ट करता है
जॉर्ज रीथ

@GeorgeReith नहीं, यह नहीं होना चाहिए। ओपी का कहना है कि संबंधों को किसी भी तरह से तोड़ा जा सकता है, और यह सिर्फ दूसरे के आगे जगह बनाएगा।
ETHproductions

आह वह बाहर संपादित किया। फिर भी इसके निर्माण की तारीख को छाँटने से बेहतर है कि आप इसे पहले से पोस्ट किए गए कुछ के बजाय अपना जवाब दें और अपना उत्तर संपादित करें।
जॉर्ज रीथ

@GeorgeReith If other answers have the same number of bytes as your own, you can choose if you want to be best or worse of them.यह अभी भी मुख्य पोस्ट में है; क्या मैं कुछ गलत समझ रहा हूं?
ETHproductions

कोई माफी नहीं मैं संपादित इतिहास पढ़ रहा था और भ्रमित हो गया।
जॉर्ज रीथ

4

PHP, 158 159 164 बाइट्स

I'm answer number <?for(;$h[]=json_decode(fread(gzopen('http://api.stackexchange.com/2.2/questions/60204/answers?pagesize=99&order=desc&sort=votes&site=codegolf&filter=!--pn9sqW9y0T',r),1e4),1)[items][+$i++][body];);echo array_sum(preg_filter(~„ÑÕß×£›ÔÖ߆‹šŒÃЗÎÑÕ‚Œš,~ÛÎÃÎÊÇ,$h)),~Ñ;

127 बाइट्स की 'http://api.stackexchange.com/2.2/questions/60204/answers?pagesize=99&order=desc&sort=votes&site=codegolf&filter=!--pn9sqW9y0T'गिनती नहीं की गई

असंगठित तार के साथ स्वरूपित संस्करण:

<?
for(;
    $h[]=json_decode(
        fread(
            gzopen(
                'http://api.stackexchange.com/2.2/questions/60204/answers?pagesize=99&order=desc&sort=votes&site=codegolf&filter=!--pn9sqW9y0T',r
            ), 1e4
        ), 1
    )[items][+$i++][body];
);
echo"I'm answer number ",
    array_sum(
        preg_filter('{.* (\d+) bytes</h1.*}se','$1<159', $h)
    ),
    ".";
  • JSON प्रतिक्रिया (वास्तव में 5 बाइट्स को बचाने के लिए प्रति बार एक बार @Blackhole के लिए धन्यवाद) लोड करता है
  • में उत्तर निकायों को एकत्र करता है $h
  • पूरे पाठ को "1" (सत्य) से बदल देता है यदि बाइट की गिनती <= 159 है, या "" (झूठा) अन्यथा
  • परिणाम बताते हैं

¶Ø’ßž‘Œˆšß‘Š’šßPHP में चरित्र अनुक्रम मान्य स्थिर नाम हैं, लेकिन क्योंकि स्थिरांक मौजूद नहीं हैं, उन्हें स्ट्रिंग शाब्दिक माना जाता है। ~उन्हें निष्क्रिय कर देता है, यह एक "I'm answer number "(एक उद्धरण चिह्न के लिए एक बाइट को सहेजना)

प्रयोग

php -derror_reporting=0 howareyou.php

मैं उत्तर संख्या 1 हूं।


क्या $aचर वास्तव में आवश्यक है? तुम बस क्यों नहीं करते $h[]=json_decode(…)[items][+$i++][body]? यह अजीब चरित्र क्या हैं, वैसे?
ब्लैकहोल

अच्छी बात। यह प्रत्येक उत्तर के लिए एक नया अनुरोध करेगा, लेकिन कौन परवाह करता है :) अजीब अक्षर उल्टे तार हैं। वे PHP में निरंतर स्थिर नाम हैं जो स्ट्रिंग शाब्दिक के रूप में उपयोग किए जाते हैं यदि वे मौजूद नहीं हैं, तो मैं उद्धरण चिह्नों को बचा सकता हूं। उदाहरण के लिए " "(3 बाइट्स) को घटाया जा सकता है (2 बाइट्स)
फैबियन शेंगलर

वास्तव में, मैंने इस उत्तर पर आपकी व्याख्या पा ली है । चूँकि यह एक असामान्य विधि है, इसलिए मुझे लगता है कि आपकी पोस्ट में इसे यहाँ फिर से समझाने का अच्छा विचार हो सकता है :)।
ब्लैकहोल

मुझे लगता है कि आप बहुत अच्छा कर सकते हैं यदि आप json_decodeऔर सिर्फ या कुछ splitपर छोड़ देते ':'हैं, जैसे: codepad.org/7rZg06by
primo

अच्छा विचार है, लेकिन मुझे डर है कि यह अविश्वसनीय हो सकता है क्योंकि स्रोत कोड में बहुत सारे कॉलोन होंगे। PHP टैग खोलने से पहले "आई एम आंसर नंबर" डालना, कम से कम दो बाइट्स बचाता है, इसके लिए धन्यवाद!
फाबियन शेंगलर

3

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

(335 - URL के लिए 149 बाइट्स)

a=d=>alert(`I'm answer number ${d.items.map(q=>(y=[q.body.match(/, (\d+)/)[1],(x=q.owner.user_id==11182)])&&x?z=y:y).sort().indexOf(z)+1}.`)
document.write(`<script src="https://api.stackexchange.com/questions/60204/answers?pagesize=100&order=desc&sort=activity&site=codegolf&filter=!)Q2B_A19OPkd2j8JforD00f5&callback=a">\x3C/script>`)


मेरे पास कोई सुराग नहीं था कि आप इसे इस तरह से कर सकते थे! क्या मैं पूछ सकता हूं कि आपने \x3Cइसके बजाय क्यों इस्तेमाल किया <?
ETHproductions

@ETHproductions क्योंकि ब्राउज़र एकदम सही स्क्रिप्ट टैग के लिए लग रहा है और स्क्रिप्ट को निष्पादित नहीं करेगा अन्यथा, यह पोस्ट प्रविष्टि तक स्क्रिप्ट टैग के समापन को रोकता है। यह एक कॉलबैक के साथ JSONP का उपयोग करता है और एपीआई पर निर्भर है कि यह इसका समर्थन करता है या नहीं, लेकिन सौभाग्य से स्टैकएक्सचेंज करता है। ईमानदारी से, मैं इसके लिए तर्क को पूरी तरह से नहीं समझता, लेकिन यह एक वैध मुद्दा है।
जॉर्ज रीथ

1

अवाक, 153 बाइट्स

BEGIN{if(u){print"I\047m answer number "system("curl -s "u"|awk -f a")".";exit}FS="1>.*,|es<\/h"}NF==3{r+=($2+0)<153?1:0}END{exit(r<1?1:r)}

इसे फ़ाइल में सहेजा जाना चाहिए aऔर जैसे चलाना चाहिए :

awk -v u=http://codegolf.stackexchange.com/questions/60204/how-are-you-doing -f a

मैं 68 बाइट्स घटा रहा हूं http://codegolf.stackexchange.com/questions/60204/how-are-you-doingऔर बूटस्ट्रैपिंग के लिए कोड में 13 जोड़ रहा हूं awk -v u=और -f a

कम गोल्फ वाला, यह छोटा भी हो सकता है:

curl -s http://codegolf.stackexchange.com/questions/60204/how-are-you-doing | awk -F"1>.*,|es<\/h" 'NF==3{r+=(0+$2)<103?1:0}END{print"I\047m answer number "(r<1?1:0)"."}'

यह हमेशा संबंधों में खुद को पसंद करता है। बाइट गिनती प्रत्येक में कठिन कोडित है।

अधिक गोल्फ संस्करण में स्क्रिप्ट को कॉल करना और सिस्टम के माध्यम से निकास मूल्य को आउटपुट करना है। प्रत्येक मामले में केवल हार्ड-कोडेड मूल्य वृद्धि की तुलना में कम गिना जाता है r, जो कि 1अगर यह अग्रणी है तो वापस समायोजित किया जाना चाहिए ।

यह सही ढंग से बाइट्स को खोजने के लिए वहाँ के बीच खाली स्थान के अगर असफल हो जायेगी bytesऔर </h1>और शायद अन्य मामलों के एक नंबर मैं नहीं माना जाता है।

जैसा कि Sun Oct 11 05:17:51 UTC 2015यह देता है:

I'm answer number 3.

चूंकि यह मेरी पहली बार गोल्फिंग है, कृपया मुझे बताएं कि क्या मैंने किसी भी नियम, खामी, गिनती आदि का उल्लंघन किया है या मैं क्या सुधार कर सकता हूं।
n0741337

मुझे लगता है कि आपको "I am number" के बजाय "I am answer number" प्रिंट करना होगा।
lirtosiast

@ तोहमसकवा हह! मुझे पता था यह सच होने के लिए अत्यधिक अच्छा था। धन्यवाद और तय। क्या बाइट्स वापस जोड़ने से स्ट्राइक थ्रू की आवश्यकता होती है?
n0741337

जब आप बाइट्स से बाहर निकलते हैं, तो आपको एक की जरूरत नहीं है, ठीक वैसे ही जैसे कि आपको स्ट्राइकथ्रू की जरूरत नहीं है।
lirtosiast

1

GNU Awk, 156 बाइट्स

(से प्रेरित होकर n0741337 के Awk समाधान ।)

यह सब बाहरी आदेशों को चलाने के बिना, यह सब स्वयं करता है।

BEGIN{d="/inet/tcp/0/"h"/80"
print"GET "p" HTTP/1.1\nHost:"h"\n"|&d
while(d|&getline)n+=match($0,/1>.*, ([0-9]+)/,m)&&m[1]<156
print"I'm answer number",n+1}

होस्टनाम और पथ को अलग-अलग मानों की अपेक्षा करता है। यह देखते हुए कि वे मुफ्त में उपलब्ध हैं, उम्मीद है कि यह नियम नहीं तोड़ेगा।

नमूना रन:

bash-4.3$ awk -v h=codegolf.stackexchange.com -v p=/questions/60204/how-are-you-doing -f number.awk 
I'm answer number 4
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.