Sugira-me um desafio!

14

Estou muito entediado e quero um desafio para resolver. Mas não vejo nenhum desafio interessante e tenho preguiça de procurar um. Você (tecnicamente, seu código) pode me sugerir um?


I / O

Entrada: Nenhuma.

Saída: Um link para um desafio aberto aleatório (ou seja, não fechado) ("Desafio" exclui !) No PPCG. Você não pode vincular a uma resposta em um desafio, apenas um desafio. (Eu não pedi uma resposta interessante!)


Exemplos

Válido:

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

Inválido:

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
fonte
Podemos produzir em http://codegolf.stackexchange.com/questions/93288/vez de http://codegolf.stackexchange.com/questions/93288/make-me-a-mooncake(observe a falta do nome do desafio).
Kritixi Lithos 26/03
@ Kritixi Lithos Claro, isso funciona.
Matthew Roh
Nem todas as perguntas de dicas têm a palavra "dicas" em seu nome. Veja este por exemplo. Isso é permitido ou você quis remover desafios na tag "dicas"?
seshoumara
@seshoumara Este último, também foi o motivo pelo qual eu digitei 'dicas' como tag.
Matthew Roh
Existem cerca de 6 mil perguntas que atendem aos seus critérios no PPCG. Todos precisam ter a chance de serem escolhidos aleatoriamente ou posso escolher aleatoriamente os 50 primeiros resultados obtidos em um link de pesquisa?
seshoumara

Respostas:

4

JavaScript (ES6), 209 bytes

Funciona, mas provavelmente atingirá o limite da API StackExchange muito rapidamente. Provavelmente levará um tempo para gerar o link, pois ele verifica aleatoriamente uma pergunta válida.

_=>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
fonte
O OP disse que todas as perguntas que atendem aos requisitos precisam ter a chance de serem escolhidas aleatoriamente.
seshoumara
@seshoumara deve ser corrigido agora.
Tom
Salve 4 bytes descartando a versão da API do URL.
Shaggy
Tenho codegolf.stackexchange.com/questions/173/… que não é válido #
sergiol
Pode confirmar que isso gera dicas desafia também ...
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

Um pouco desagradável e pouco golfe, mas não consegui descobrir uma maneira melhor de fazê-lo. Como isso força a API de maneira mais ou menos bruta, você gastará sua cota rapidamente e começará a receber erros, mas depois de algumas horas voltará a funcionar.

EDIT: Salva 113 bytes removendo várias coisas desnecessárias, graças ao NoOneIsHere.

LyricLy
fonte
Você usa apenas luma vez, por isso é desnecessário.
NoOneIsHere
Está correto. Fiz isso para poder imprimir o link posteriormente, se ele fosse válido, mas isso imprimiu o link da API em vez do link normal. Obrigado por me lembrar.
LyricLy
Além disso, você pode online o trye talvez o except.
NoOneIsHere
Isso também está correto. Obrigado novamente.
LyricLy
Feliz em ajudar. Pad
NoOneIsHere
1

SEDE SQL: 79 bytes

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

Existem 2 capturas. Você tem que esperar um pouco antes de executar novamente ou você tem um hit de cache (como um mod me disse) e você só obtém o número de identificação da pergunta.

Christopher
fonte
Eu acho que é válido, porque eu não sou tão preguiçoso para nem mesmo ser capaz de escrever
Matthew Roh
Sim! A tua palavra é leigo em seu desafio
Christopher