পাইথন 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