Запропонуйте мені виклик!


14

Мені занадто нудно і хочу вирішити виклик. Але я не бачу ніяких цікавих викликів, і я лінивий шукати його. Чи можете ви (технічно ваш код) запропонувати мені це?


I / O

Введення: Ні.

Вихід: Посилання на випадковий відкритий (тобто незакритий ) виклик ("Challenge" виключає !) На 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(відзначте відсутність назви виклику).
користувач41805

@Kritixi Lithos Sure, це працює.
Меттью Рох

Не у всіх питаннях підказок у назві є слово "підказки". Дивіться це, наприклад. Це дозволено чи ви мали на увазі зняти проблеми в тезі "поради"?
seshoumara

@seshoumara Останнє, це також причина, коли я набрав "підказки" як тег.
Меттью Рох

Існує близько 6k питань, що відповідають вашим критеріям щодо 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

@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, ви витратите свою квоту досить швидко і почнете отримувати помилки, але через кілька годин вона знову запрацює.

EDIT: Збережено 113 байт, видаливши кілька непотрібних речей, завдяки NoOneIsHere.


Ви використовуєте лише 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 вилову. Вам доведеться почекати деякий час, перш ніж запустити знову, або у вас є хіт кешу (як сказав мод), і ви отримаєте лише ідентифікаційний номер питання.


Я думаю, що це дійсно, тому що я не лінуюся, що навіть не в змозі набрати
Меттью Рох

Так! Ваше слово лежить у вашому виклику
Крістофер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.