Determine If a Challenge is Worth Answering I am a very casual code golfer, and don't often see posts until they show up in the "Hot Network Questions" sidebar over on StackOverflow.  Usually, I'm late to the game, and since the only language I know is Python, there is little point in me answering as there are already several Python answers.  Your challenge is to figure out if a question is worth me answering.

Input:


Your code (function or program) will take one input parameter i


Output:


Truthy or Falsey value for question id i.  Output Truthy if question has more than 5 answers, greater than 3 question score, and one or less answer in Python (no distinction between version).


Rules/Clarifications:


Input format can be anything reasonable (stdin, file, command line), but should be specified in your answer.  Data types and leading/trailing whitespace doesn't matter.
Assume question id is valid for codegolf.stackexchange.com.
Ignore language specific question requirements.  (i.e. if a question meets votes and answers, and has no Python answers because it is Java only, it still results in Truthy).
An answer qualifies as a Python answer if "python" (case insenstive) occurs anywhere before the first newline of the post.
This is code golf, so shortest code in bytes wins.


Sample Cases*

id = 79082 =&gt; True
id = 78591 =&gt; False (less than 5 answers, also hella hard)
id = 78410 =&gt; True
id = 76428 =&gt; False (greater than 1 Python answer)
id = 78298 =&gt; False (not high enough question score)


*Verified at time of posting, may have changed
05AB1E, 167 160 159 158 156 154 143 bytes

Damn, almost as long as a normal language... 

Crap... longer currently beating the the Ruby answer by 1 byte. 

Now longer than the Ruby answer, argh!.

I probably should go to bed right now.

Thanks to @wnnmaw for saving 1 byte and thanks to @R. Kap for saving another 2 bytes!

Code:

’£Ø ˆå§¾.‡¢ as g;#.¾¿„–(g.ˆåƒÛ('·Ç://ÐÏg.´¢/q/'+•œ_#()).‚Ø())’.e©’„à="Ž»"’DU¢®…îŒ€ƒŠ‡¡`99£þs\®X¡¦vy’„à="‚¬-„¹"’¡¦'&gt;¡¦¦¬l’±¸’¢s\}rUV)O2‹X5›Y3›)P


Or with more readability:

’£Ø ˆå§¾.‡¢ as g;#.¾¿„–(g.ˆåƒÛ('·Ç://ÐÏg.´¢/q/'+•œ_#()).‚Ø())’
 .e©
’„à="Ž»"’
 DU¢®
“îŒ€ƒŠ‡“
 ¡`99£þs\®X¡¦
v
 y’„à="‚¬-„¹"’¡¦'&gt;¡¦¦¬l’±¸’¢s\}rUV)O2‹X5›Y3›)P


Explanation:

First of all, a lot of text is being compressed here, which translates to good old Python. The uncompressed version is:

"import urllib.request as g
 f=g.urlopen('http://ppcg.lol/q/'+pop_#())
 #.append(f.read())"
.e©“class="answer"“¢®"useful and clear"¡`99£þs\®“class="answer"“¡¦vy“class="post-text"“¡¦'&gt;¡¦¦¬l"python"¢s\}rUV)O2‹X5›Y3›)P


This part:

import urllib.request as g
stack.append(g.urlopen('http://ppcg.lol/q/'+pop_stack()).read())`


actually pops a stack value, copies it into the url and fetches all HTML data. The HTML data is pushed on top of the stack using #.append(f.read()).

We count the number of answers, by count the number of occurences of class="answer".

To count the number of votes, we just split the data at "useful and clear" and keep only the digit values of [0:99] using ®"useful and clear"¡`99£þ. This is the number of upvotes.

Eventually, we need to check every answer if the text "Python" exists before the closing header text. To get all answers, we just split the data on class="post-text" and split each of them again on &lt;. We remove the first two elements to get the part in which the language is displayed and check if the lowercase version is in this string.

So, now our stack looks like this for id = 79273:

`[6, '14', 0, 0, 0, 1, 0, 0]`
  │    │   └───────┬──────┘
  │    │           │
  │    │   is python answer?
  │    │
  │    └── number of upvotes
  │
  └─── number of answers


This can also be seen with the -debug flag on in the interpreter.

So, it's just a matter of processing the data:

rUV)O2‹X5›Y3›)P

r                # Reverse the stack
 U               # Pop the number of answers value and store into X
  V              # Pop the number of upvotes value and store into Y
   )O            # Wrap everything together and sum it all up
     2‹          # Check if smaller than 2
       X5›       # Push X and check if greater than 5
          Y3›    # Push Y and check if greater than 3
             )P  # Wrap everything into an array and take the product.
                   This results into 1 if and only if all values are 1 (and not 0).


Uses CP-1252 encoding. You can download the interpreter here.