पायथन 3.5, 280 272 260 242 240 बाइट्स:
( 2 बचा बाइट्स में जिसके परिणामस्वरूप तुलना में ऑपरेटर का उपयोग करने के बारे में चाल के लिए अदनान का धन्यवाद *
! )
def g(o):import urllib.request as u,re;R=re.findall;w=bytes.decode(u.urlopen('http://ppcg.lol/q/'+o).read());print((len(R('(?:<h[0-9]>|<p>).*python',w.lower()))<2)*(int(R('(?<="vote-count-post ">)[0-9]+',w)[0])>3)*w.count('answercell">')>5)
काफी सरल। urllib
प्रश्न की साइट पर जाने के लिए लाइब्रेरी में निर्मित पायथन का उपयोग करता है , और फिर मतगणना, उत्तर गणना, और वेबसाइट से लौटे डिकोड पाठ में पायथन के विशिष्ट उत्तरों की गिनती के लिए नियमित अभिव्यक्ति का उपयोग करता है। अंत में, इन मानों की तुलना किसी truthy
मान को लौटाने के लिए आवश्यक शर्तों से की जाती है , और यदि वे सभी शर्तों को पूरा करते हैं, तो True
वापस कर दिया जाता है। नहीं तो False
है
केवल एक चीज जो मुझे यहां चिंतित कर सकती है, वह यह है कि नियमित भाव बाइट्स को बचाने के लिए अजगर के विशिष्ट उत्तरों की संख्या के संदर्भ में बहुत अधिक रास्ता देते हैं, इसलिए यह कई बार थोड़ा गलत हो सकता है, हालांकि यह बहुत अच्छा है इस चुनौती के उद्देश्य। हालाँकि, यदि आप बहुत अधिक सटीक चाहते हैं, तो मैंने नीचे एक जोड़ा है, हालाँकि यह ऊपर वाले की तुलना में अधिक लंबा है। नीचे दिखाया गया वर्तमान में 298 बाइट्स हैं क्योंकि यह बहुत अधिक नियमित अभिव्यक्ति का उपयोग करता है-एक जिसे आप नहीं जान सकते थे कि सटीकता की खातिर मेरे मूल कार्य की तुलना में पायथन के उत्तर गिनने में मुझे कितना समय लगा। यह एक कम से कम 80% से 90% सभी परीक्षण मामलों के लिए काम करना चाहिए।
def g(o):import urllib.request as u,re;R=re.findall;w=bytes.decode(u.urlopen('http://ppcg.lol/q/'+o).read());print(len(R('(?<=answercell">).*?(?:<h[0-9]>|<strong>)[^\n]*python[^\n]*(?=</h[0-9]>|</strong>)',w.lower()))<2and int(R('(?<="vote-count-post ">)[0-9]+',w)[0])>3and w.count('answercell">')>5)
लेकिन, उन सवालों के बारे में जिनके कई पृष्ठों के उत्तर हैं? उपरोक्त में से कोई भी उस स्थिति में बहुत अच्छी तरह से काम नहीं करेगा, अगर, कहते हैं, 1 अजगर उत्तर पहले पृष्ठ पर है और दूसरा दूसरे पर है। खैर, मैंने अपने फ़ंक्शन का एक और संस्करण (नीचे दिखाया गया) बनाकर इस समस्या को ठीक करने के लिए स्वतंत्रता ली, जो उत्तर के हर पृष्ठ की जांच करता है, अगर कई मौजूद हैं, तो पायथन जवाब के लिए, और इसने कई परीक्षण मामलों पर काफी अच्छा किया है इस पर फेंक दिया है। खैर, आगे की हलचल के बिना, यहां नया और अपडेट किया गया फ़ंक्शन है:
def g(o):
import urllib.request as u,re;R=re.findall;w=bytes.decode(u.urlopen('http://ppcg.lol/q/'+o).read());t=0if len(re.findall('="go to page ([0-9]+)">',w))<1else max([int(i)for i in re.findall('="go to page ([0-9]+)">',w)])
if t<1:print(len(R('(?<=answercell">).*?(?:<h[0-9]>|<strong>)[^\n]*python[^\n]*(?=</h[0-9]>|</strong>)',w.lower(),re.DOTALL))<2and int(R('(?<="vote-count-post ">)[0-9]+',w)[0])>3and w.count('answercell">')>5)
else:
P=[];U=[];K=[]
for i in range(2,t+2):P.append(len(R('(?<=answercell">).*?(?:<h[0-9]>|<strong>)[^\n]*python[^\n]*(?=</h[0-9]>|</strong>)',w.lower(),re.DOTALL)));U.append(int(R('(?<="vote-count-post ">)[0-9]+',w)[0]));K.append(w.count('answercell">'));w=bytes.decode(u.urlopen('http://ppcg.lol/questions/'+o+'/?page='+str(i)).read())
print(sum(P)<2and U[0]>3and sum(K)>5);print('# Python answers: ',sum(P));print('# Votes: ',U[0]);print('# Answers: ',sum(K))
काफी लंबा है, है ना? मैं वास्तव में इस के साथ कोड गोल्फ के लिए ज्यादा नहीं जा रहा था, हालांकि, यदि आप चाहें, तो मैं इसे थोड़ा और नीचे गोल्फ कर सकता हूं। अन्यथा, मैं इसे प्यार करता हूं, और खुश नहीं हो सकता। ओह, मैं लगभग भूल गया, एक अतिरिक्त बोनस के रूप में, यह सवाल पर अजगर जवाब की कुल संख्या, सवाल पर कुल वोट, और सवाल पर जवाब की कुल संख्या का आउटपुट देता है, अगर सवाल id
1 से अधिक पेज वाले प्रश्न से मेल खाता है जवाब के। अन्यथा, यदि प्रश्न में केवल उत्तर के एक पृष्ठ होते हैं, तो यह केवल truthy/falsy
मूल्य का उत्पादन करता है । मैं वास्तव में इस चुनौती से थोड़ा दूर चला गया।
ये प्रत्येक प्रश्न id
को एक स्ट्रिंग के रूप में लेते हैं ।
मैं Try It Online!
प्रत्येक फ़ंक्शन के लिए यहां लिंक डालूंगा , लेकिन दुर्भाग्य से, न तो पायथन की लाइब्रेरी के माध्यम से संसाधनों को लाने की अनुमति देता है repl.it
और न ही ।Ideone
urllib