Suggérez-moi un défi!

14

Je m'ennuie trop et je veux un défi à résoudre. Mais je ne vois pas de défis intéressants et je suis trop paresseux pour en chercher un. Pouvez-vous (Eh bien, techniquement votre code) m'en suggérer un?


E / S

Entrée: aucune.

Sortie: Un lien vers un défi ouvert (c'est-à-dire non fermé) aléatoire («Défi» exclut les !) Sur PPCG. Vous ne pouvez pas lier à une réponse dans un défi, juste un défi. (Je n'ai pas demandé de réponse intéressante!)


Exemples

Valide:

http://codegolf.stackexchange.com/questions/93288/make-me-a-mooncake
http://codegolf.stackexchange.com/questions/113796/raise-a-single-number
http://codegolf.stackexchange.com/questions/113898

Invalide:

http://codegolf.stackexchange.com/questions/78152/tips-for-golfing-in-matl (tips question)
http://codegolf.stackexchange.com/questions/113896/josephus-problem (closed)
http://codegolf.stackexchange.com/questions/84260/add-two-numbers/84365#84365 (linked to answer)
Matthew Roh
la source
Pouvons-nous produire à la http://codegolf.stackexchange.com/questions/93288/place de http://codegolf.stackexchange.com/questions/93288/make-me-a-mooncake(notez l'absence de nom de défi).
user41805
@Kritixi Lithos Bien sûr, cela fonctionne.
Matthew Roh
Toutes les questions de conseils n'ont pas le mot «conseils» dans leur nom. Voir celui-ci par exemple. Est-ce autorisé ou vouliez-vous supprimer les défis dans la balise "tips"?
seshoumara
@seshoumara Ce dernier, c'est aussi la raison pour laquelle j'ai tapé «conseils» comme balise.
Matthew Roh
Il y a environ 6k questions répondant à vos critères sur PPCG. Tous doivent-ils avoir une chance d'être choisis au hasard, ou puis-je choisir au hasard parmi les 50 premiers résultats que j'obtiens à partir d'un lien de recherche?
seshoumara

Réponses:

4

JavaScript (ES6), 209 octets

Fonctionne, mais atteindra très probablement la limite de l'API StackExchange très rapidement. La sortie du lien prendra probablement un certain temps, car il recherche aléatoirement une question valide.

_=>fetch(`//api.stackexchange.com/2.2/questions/${new Date%2e4}?site=codegolf`).then(_=>_.json()).then((a,b=a.items)=>{if(!b.length||b[0].tags.includes`tips`||b[0].closed_date)f();else console.log(b[0].link)})

f=_=>fetch(`//api.stackexchange.com/2.2/questions/${new Date%2e4}?site=codegolf`).then(_=>_.json()).then((a,b=a.items)=>{if(!b.length||b[0].tags.includes`tips`||b[0].closed_date)f();else console.log(b[0].link)})

f();

À M
la source
Le PO a déclaré que toutes les questions répondant aux exigences doivent avoir une chance d'être choisies au hasard.
seshoumara
@seshoumara devrait être corrigé maintenant.
Tom
Économisez 4 octets en supprimant la version de l'API de l'URL.
Shaggy
Got codegolf.stackexchange.com/questions/173/… qui n'est pas valide
sergiol
Peut confirmer que cela génère aussi des défis de conseils ...
FlipTack
2

Python 3, 452 339 octets

from requests import*
from random import*
while 1:
    n=randrange(999999)
    r=get("http://api.stackexchange.com/questions/%d?site=codegolf"%n).json()
    if r["items"]:
        m=r["items"][0]
        if "tips" not in m["tags"]:
            try:m["closed_date"]
            except:print("http://codegolf.stackexchange.com/q/%d"%n);break

Un peu disgracieux et pas très golfique, mais je ne pouvais pas trouver une meilleure façon de le faire. Puisque cela force plus ou moins brutalement l'API, vous dépenserez votre quota assez rapidement et commencerez à obtenir des erreurs, mais après quelques heures, cela fonctionnera à nouveau.

EDIT: 113 octets enregistrés en supprimant plusieurs choses inutiles, grâce à NoOneIsHere.

LyricLy
la source
Vous ne l'utilisez lqu'une seule fois, c'est donc inutile.
NoOneIsHere
C'est correct. Je l'ai fait pour pouvoir imprimer le lien ensuite s'il était valide, mais cela a imprimé le lien API au lieu du lien normal. Merci de me le rappeler.
LyricLy
De plus, vous pouvez en ligne le tryet peut-être le except.
NoOneIsHere
C'est également exact. Merci encore.
LyricLy
Heureux de vous aider. Pad
NoOneIsHere
1

SEDE SQL: 79 octets

Select Id from posts where ClosedDate IS NULL AND Tags !='tips' ORDER BY RAND()

Il y a 2 captures. Celui que vous devez attendre un certain temps avant de recommencer ou vous avez un accès au cache (comme un mod me l'a dit) et vous obtenez uniquement le numéro d'identification de la question.

Christophe
la source
Je pense que c'est valable parce que je ne suis pas si paresseux pour ne même pas pouvoir taper
Matthew Roh
Oui! Votre parole repose sur votre défi
Christopher