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)

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


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


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.


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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.