Schlagen Sie mir eine Herausforderung vor!

14

Ich bin zu gelangweilt und möchte eine Herausforderung lösen. Aber ich sehe keine interessanten Herausforderungen und bin zu faul, um nach einer zu suchen. Können Sie mir (technisch gesehen Ihr Code) einen vorschlagen?


I / O

Eingabe: Keine.

Ausgabe: Ein Link zu einer zufälligen offenen (dh nicht geschlossenen) Herausforderung ("Herausforderung" schließt !) Auf PPCG. Sie können nicht auf eine Antwort in einer Herausforderung verlinken, nur eine Herausforderung. (Ich habe nicht nach einer interessanten Antwort gefragt!)


Beispiele

Gültig:

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

Ungültig:

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
quelle
Können wir Ausgang http://codegolf.stackexchange.com/questions/93288/statt http://codegolf.stackexchange.com/questions/93288/make-me-a-mooncake(Name beachten Sie den Mangel an Herausforderung).
Kritixi Lithos
@Kritixi Lithos Klar, das funktioniert.
Matthew Roh
Nicht in allen Tipps steht das Wort "Tipps" im Namen. Sehen Sie sich dieses Beispiel an. Ist das erlaubt oder wolltest du Herausforderungen im "tips" -Tag entfernen?
Seshoumara
@seshoumara Letzteres ist auch der Grund, warum ich 'tips' als Tag eingegeben habe.
Matthew Roh
Es gibt ungefähr 6k Fragen, die Ihre Kriterien für PPCG erfüllen. Müssen alle die Chance haben, zufällig ausgewählt zu werden, oder kann ich zufällig aus den ersten 50 Ergebnissen auswählen, die ich über einen Suchlink erhalte?
Seshoumara

Antworten:

4

JavaScript (ES6), 209 Byte

Funktioniert, wird aber höchstwahrscheinlich sehr schnell das StackExchange-API-Limit erreichen. Die Ausgabe des Links wird wahrscheinlich eine Weile dauern, da zufällig nach einer gültigen Frage gesucht wird.

_=>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();

Tom
quelle
Dem OP zufolge müssen alle Fragen, die den Anforderungen entsprechen, zufällig ausgewählt werden können.
Seshoumara
@seshoumara sollte jetzt behoben sein.
Tom
Sparen Sie 4 Byte, indem Sie die API-Version von der URL löschen.
Shaggy
Got codegolf.stackexchange.com/questions/173/… die nicht gültig ist
Sergiol
Kann bestätigen , dass dies erzeugt Tipps Herausforderungen zu ...
FlipTack
2

Python 3, 452 339 Bytes

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

Ein bisschen unansehnlich und nicht sehr golfen, aber ich könnte keinen besseren Weg finden, es zu tun. Da dies die API mehr oder weniger brachial erzwingt, verbrauchen Sie Ihr Kontingent recht schnell und bekommen Fehler, aber nach ein paar Stunden funktioniert es wieder.

BEARBEITEN: Dank NoOneIsHere konnten 113 Bytes eingespart werden, indem mehrere unnötige Dinge entfernt wurden.

Textlich
quelle
Sie verwenden nur leinmal, so ist es unnötig.
NoOneIsHere
Das ist richtig. Ich habe das getan, damit ich den Link später ausdrucken konnte, wenn er gültig war, aber der API-Link wurde anstelle des normalen gedruckt. Danke, dass du mich erinnert hast.
Text
Sie können auch online die tryund vielleicht die except.
NoOneIsHere
Das stimmt auch. Danke noch einmal.
Text
Froh, dass ich Helfen kann. Pad
NoOneIsHere
1

SEDE SQL: 79 Bytes

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

Es gibt 2 Fänge. Zum einen musst du eine Weile warten, bevor du wieder startest oder du hast einen Cache-Hit (wie mir ein Mod gesagt hat) und du bekommst nur die Frage-ID-Nummer.

Christopher
quelle
Ich denke, es ist gültig, weil ich nicht so faul bin, nicht einmal tippen zu können
Matthew Roh
Ja! Ihr Wort liegt auf Ihrer Herausforderung
Christopher