क्या मैं डेनिस द्वारा बहिष्कृत हूं?


15

किंवदंती के अनुसार , लगभग सभी डेनिस द्वारा बहिष्कृत हैं । यदि नहीं, तो वे होंगे।

अगर मैं उन 'लगभग सभी' में से एक हूं तो मैं उत्सुक हूं।

के प्रारूप में आपको उत्तर के लिए एक लिंक दिया जाएगा /codegolf/[QUESTION ID]/[QUESTION NAME]/#[ANSWER ID]

कोड की लंबाई ज्ञात कीजिए, जिसे हम लिंक में उत्तर की पहली पंक्ति (मार्कडाउन वार) पर अंतिम संख्या के रूप में मानेंगे ।

फिर, डेनिस के उत्तरों की खोज करें, और वही करें।

अब इनपुट की और डेनिस के उत्तर कोड की लंबाई की तुलना करें, और यदि यह आउट-गोल्फ हो गया है (मतलब डेनिस का एक या अधिक उत्तर इनपुट इनपुट से कम है), तो एक सत्य मूल्य, और यदि नहीं, तो एक मिथ्या मूल्य।

यदि उत्तर के रूप में एक ही प्रश्न पर डेनिस से संबंधित कोई उत्तर नहीं है, तो एक मिथ्या मूल्य का उत्पादन होता है।

उदाहरण

  • लिंक :true
  • लिंक : false(कम से कम अब के लिए, मुझे बताओ कि यह कब बदलता है)

नियम

  • आप सच्चाई / झूठे मूल्य के किसी भी रूप का उपयोग कर सकते हैं।
  • आपके द्वारा दिए गए उत्तर का प्रश्न हमेशा
  • प्रश्न में डेनिस का उत्तर नहीं हो सकता है, लेकिन इनपुट किए गए उत्तर डेनिस से संबंधित नहीं होंगे।

  • आप मान सकते हैं कि उत्तर की पहली पंक्ति पर हमेशा एक संख्या होती है।


3
क्या हम मान सकते हैं कि दिए गए प्रश्न पर डेनिस द्वारा हमेशा एक उत्तर दिया जाएगा, और यह कि दिया गया उत्तर डेनिस का उत्तर नहीं होगा?
स्कंददेव

@Mayube नहीं, और हाँ।
मैथ्यू रो

क्या हमें पेजिंग को संभालने की आवश्यकता है या क्या हम मान सकते हैं कि दोनों उत्तर एक ही पृष्ठ पर होंगे यदि उत्तर के कई पृष्ठ हैं?
झबरा

@ शैगी पूर्व।
मैथ्यू रो

@SIGSEGV अगर डेनिस का कोई जवाब नहीं है तो क्या हम गलत उत्पादन करते हैं क्योंकि डेनिस ने जवाब नहीं दिया है?
स्कंददेव

जवाबों:


1

पायथन 3.6 + अनुरोध + bs4 - 363 358 बाइट्स

import bs4,re,requests
u,n=input().split("/#");i=1;d=y=float("inf")
while i:
 A=bs4.BeautifulSoup(requests.get(u+f"?page={i}").text,"html.parser")(class_="answer")
 for a in A:
  c=int(re.findall("\d+",(a("h1")+a("h2")+a("p"))[0].text)[-1])
  if "Dennis"in a(class_="user-details")[-1].text:d=min(c,d)
  if a["data-answerid"]==n:y=c
 i=A and i+1;
print(d<y)

प्रिंटों Trueया False

नोट: वर्तमान में इस उत्तर द्वारा निर्मित अवैध HTML के कारण दूसरे लिंक पर काम नहीं करता है ( emऔर strongटैग दूसरी पंक्ति के अंत में गलत क्रम में समाप्त हो जाते हैं, और पार्सर उपयोगकर्ता नाम ब्लॉक को याद करने का कारण बनता है)। इसके बजाय इस लिंक पर प्रयास करें ।

एपीआई का उपयोग करना - 401 380 बाइट्स

import requests,re
q,A=re.findall("\d+",input());i=1;d=y=float("inf")
while i:
 r=requests.get(f"https://api.stackexchange.com/2.2/questions/{q}/answers?site=codegolf&filter=withbody&page={i}").json();i=r["has_more"]and i+1
 for a in r["items"]:
  c=int(re.search("(\d+)\D+$",a["body"]).group(1))
  if a["owner"]["user_id"]==12012:d=min(d,c)
  if a["answer_id"]==A:y=c
print(d<y)

ध्यान दें कि यह दूसरे लिंक पर भी विफल रहता है, लेकिन क्योंकि एक उत्तर के साथ शुरू हुआ था This may be foul play. हेडर के बजाय ...


JSON पार्सर के माध्यम से उत्तर डेटा प्राप्त करने के लिए स्टैक एक्सचेंज एपीआई का उपयोग करने पर विचार करें filter=withbody, बाइट काउंट को प्राप्त करने के लिए उत्तर निकाय प्राप्त करने के लिए बस अपने जीईटी अनुरोध में सुनिश्चित करें
मूल्य इंक

एपीआई संस्करण के साथ, आपने aदो बार उपयोग किया (एक बार उत्तर आईडी सेट करने के लिए, और एक और जब पुनरावृत्ति होती है r["items"], जिससे गलत व्यवहार होगा। इसके अलावा, आपको इसे सेट करने की आवश्यकता नहीं है pagesize(यह 30 के लिए डिफ़ॉल्ट होगा) c=int(re.search(r'(\d+) bytes').group(1))आपको चाहिए । बाइटकाउंट का अधिक सटीक पुनर्प्राप्ति और कम है, और अगर यह अभी भी विफल हो जाता है, (\d+)\s*bytesतो चाल करता है, लेकिन थोड़ा लंबा है। अंत में, i=r["has_more"]and i+1आपकी त्रिगर्त सशर्त से कम है।
मूल्य इंक

वास्तव में, रेगेक्स मैच के बारे में भूल जाओ। मैं फ़ंक्शन कॉल में उत्तर निकाय जोड़ने के लिए खाता भूल गया, ताकि भाग लंबा हो। अन्य सुझाव अभी भी मान्य हैं, हालांकि।
मूल्य स्याही

@ValueInk धन्यवाद, अब थोड़ा कम। हम की तरह दिखता है, बस API के लिए एक गोल्फ भाषा की जरूरत है अपने कॉल कर रहे हैं sooo लंबा ...
matsjoyce

शायद। लेकिन ईमानदारी से यह भी तथ्य है कि आपके पास एक अच्छा HTML पार्सर है, साथ ही इस तथ्य को भी कि आपको डिफ़ॉल्ट रूप से प्रश्न URL दिया गया है। यदि इनपुट दो नंबर के बजाय होता, तो कोडगॉल्फ प्रश्न के लिए पेज प्राप्त करने के लिए बहुत अधिक ओवरहेड होता।
मूल्य स्याही

1

रूबी, 314 315 308 + 20 = 334 335 328 बाइट्स

झंडे का उपयोग करता है -n -rjson -ropen-uri। एक मामूली बग को ठीक करने से +1 बाइट।

-7 बाइट्स open-uriरूबी डिफ़ॉल्ट पुस्तकालय की खोज के द्वारा ।

~/(\d+)\D+(\d+)/
u="http://api.stackexchange.com/2.2/questions/#$1/answers?site=codegolf&filter=withbody&page=%s"
n=eval$2
a="answer_id"
j=1
o=[]
(o+=r=JSON.parse(open(u%j).read)["items"]
j=r!=[]&&j+1)while j
p o.select{|e|e["owner"]["user_id"]==12012||e[a]==n}.min_by{|e|e["body"][/\d+\s*bytes/].to_i}[a]!=n
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.