¡Sugiérame un desafío!

14

Estoy demasiado aburrido y quiero un desafío para resolver. Pero no veo ningún desafío interesante, y soy demasiado vago para buscar uno. ¿Puedes (Bueno, técnicamente tu código) sugerirme uno?


I / O

Entrada: ninguna.

Salida: un enlace a un desafío abierto aleatorio (es decir, no cerrado) ("¡Desafío" excluye !) En PPCG. No puede vincular a una respuesta en un desafío, solo un desafío. (¡No pedí una respuesta interesante!)


Ejemplos

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
fuente
¿Podemos generar en http://codegolf.stackexchange.com/questions/93288/lugar de http://codegolf.stackexchange.com/questions/93288/make-me-a-mooncake(tenga en cuenta la falta de nombre de desafío).
Kritixi Lithos
@Kritixi Lithos Claro, eso funciona.
Matthew Roh
No todas las preguntas de consejos tienen la palabra "consejos" en su nombre. Ver este por ejemplo. ¿Está permitido o quiso eliminar los desafíos en la etiqueta de "consejos"?
seshoumara
@seshoumara Este último, esa es también la razón por la que escribí 'consejos' como etiqueta.
Matthew Roh
Hay alrededor de 6k preguntas que cumplen sus criterios en PPCG. ¿Es necesario que todos tengan la oportunidad de ser elegidos al azar, o puedo elegir al azar de los primeros 50 resultados que obtengo de un enlace de búsqueda?
seshoumara

Respuestas:

4

JavaScript (ES6), 209 bytes

Funciona, pero lo más probable es que alcance el límite de StackExchange API muy rápidamente. Probablemente tomará un tiempo generar el enlace, ya que está buscando aleatoriamente una pregunta 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
fuente
El OP dijo que todas las preguntas que cumplan los requisitos deben tener la posibilidad de ser elegidas al azar.
seshoumara
@seshoumara debería arreglarse ahora.
Tom
Ahorre 4 bytes eliminando la versión de API de la URL.
Shaggy
Tengo codegolf.stackexchange.com/questions/173/… que no es válido
sergiol
Puede confirmar que esto también genera desafíos de consejos ...
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

Un poco desagradable y no muy golfista, pero no pude encontrar una mejor manera de hacerlo. Debido a que esto fuerza más o menos la fuerza bruta de la API, gastará su cuota con bastante rapidez y comenzará a obtener errores, pero después de unas horas volverá a funcionar.

EDITAR: ahorró 113 bytes al eliminar varias cosas innecesarias, gracias a NoOneIsHere.

LyricLy
fuente
Solo se usa luna vez, por lo que es innecesario.
NoOneIsHere
Eso es correcto. Hice eso para poder imprimir el enlace después si era válido, pero eso imprimió el enlace API en lugar del normal. Gracias por recordarme.
LyricLy
Además, puede en línea el tryy tal vez el except.
NoOneIsHere
Eso también es correcto. Gracias de nuevo.
Letra de
Encantado de ayudar. Pad
NoOneIsHere
1

SEDE SQL: 79 bytes

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

Hay 2 capturas. Uno tiene que esperar un tiempo antes de volver a ejecutarlo o tiene un hit de caché (como me dijo un mod) y solo obtiene el número de identificación de la pregunta.

Christopher
fuente
Creo que es válido porque no soy tan vago como para no poder siquiera escribir
Matthew Roh
¡Si! Tu palabra está puesta en tu desafío
Christopher