Предложите мне вызов!

14

Мне слишком скучно, и я хочу решить проблему. Но я не вижу интересных проблем, и мне лень искать их. Можете ли вы (ну, технически ваш код) предложить мне один?


I / O

Вход: нет.

Вывод: ссылка на случайный открытый (т.е. не закрытый) вызов («Испытание» исключает !) В PPCG. Вы не можете ссылаться на ответ в вызове, просто вызов. (Я не просил интересный ответ!)


Примеры

Действительно:

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

Инвалид:

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)
Мэтью Ро
источник
Можем ли мы выводить http://codegolf.stackexchange.com/questions/93288/вместо http://codegolf.stackexchange.com/questions/93288/make-me-a-mooncake(обратите внимание на отсутствие имени задачи).
user41805
@ Kritixi Lithos Конечно, это работает.
Мэтью Ро
Не все вопросы с советами имеют в своем названии слово «советы». Смотрите этот пример. Это разрешено или вы хотели удалить вызовы в теге "tips"?
Сешумара
@seshoumara Последнее, по этой же причине я набрал «подсказки» в качестве тега.
Мэтью Ро
Есть около 6 тысяч вопросов, отвечающих вашим критериям в PPCG. Все ли должны иметь шанс быть случайно выбранным, или я могу выбрать случайным образом из первых 50 результатов, которые я получил по поисковой ссылке?
seshoumara

Ответы:

4

JavaScript (ES6), 209 байт

Работает, но, скорее всего, очень быстро достигнет предела API StackExchange. Для вывода ссылки, вероятно, потребуется некоторое время, так как она проверяет случайным образом правильный вопрос.

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

Том
источник
ФП сказал, что все вопросы, отвечающие требованиям, должны иметь возможность выбора случайным образом.
Сешумара
@seshoumara должна быть исправлена ​​сейчас.
Том
Сохраните 4 байта, удалив версию API из URL.
Лохматый
Получил codegolf.stackexchange.com/questions/173/…, который не действителен
sergiol
Могу подтвердить, что это порождает проблемы с подсказками ...
FlipTack
2

Python 3, 452 339 байт

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

Немного некрасиво и не очень в гольфе, но я не мог найти лучший способ сделать это. Поскольку это более или менее грубое применение API, вы довольно быстро расходуете свою квоту и начинаете получать ошибки, но через несколько часов она снова заработает.

РЕДАКТИРОВАТЬ: благодаря NoOneIsHere удалось сэкономить 113 байтов, удалив несколько ненужных вещей.

LyricLy
источник
Вы используете только lодин раз, так что это не нужно.
NoOneIsHere
Правильно. Я сделал это, чтобы потом распечатать ссылку, если она действительна, но вместо обычной ссылки была напечатана ссылка API. Спасибо за напоминание.
LyricLy
Кроме того , вы можете онлайн tryи возможно except.
NoOneIsHere
Это тоже правильно. Еще раз спасибо.
LyricLy
Рад помочь. Pad
NoOneIsHere
1

SEDE SQL: 79 байт

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

Есть 2 улова. Сначала вам нужно подождать некоторое время, прежде чем запускать снова, или вы попали в кеш (как сказал мне мод), и вы получите только номер идентификатора вопроса.

Кристофер
источник
Я думаю, что это действительно так, потому что я не
Мэтью Ро
Да! Ваше слово лежит на вашем вызове
Кристофер