Sarankan saya tantangan!

14

Saya terlalu bosan dan ingin tantangan untuk dipecahkan. Tetapi saya tidak melihat tantangan yang menarik, dan saya terlalu malas untuk mencari satu. Bisakah Anda (Yah, secara teknis kode Anda) menyarankan saya satu?


I / O

Input: Tidak Ada.

Output: Tautan ke tantangan acak terbuka (yaitu tidak tertutup) ("Tantangan" tidak termasuk !) Di PPCG. Anda tidak boleh menautkan ke jawaban dalam tantangan, Hanya tantangan. (Saya tidak meminta jawaban yang menarik!)


Contohnya

Sah:

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

Tidak valid:

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
sumber
Bisakah kita menampilkan http://codegolf.stackexchange.com/questions/93288/bukan http://codegolf.stackexchange.com/questions/93288/make-me-a-mooncake(perhatikan kurangnya nama tantangan).
Kritixi Lithos
@Kritixi Lithos Tentu, itu berhasil.
Matius Roh
Tidak semua kiat pertanyaan memiliki kata "kiat" dalam nama mereka. Lihat yang ini misalnya. Apakah itu diizinkan atau maksud Anda untuk menghapus tantangan di tag "tips"?
seshoumara
@seshoumara Yang terakhir, itu juga alasan saya mengetik 'tips' sebagai tag.
Matius Roh
Ada sekitar 6k pertanyaan yang memenuhi kriteria Anda di PPCG. Apakah semua perlu memiliki kesempatan untuk dipilih secara acak, atau bisakah saya memilih secara acak dari 50 hasil pertama yang saya dapatkan dari tautan pencarian?
seshoumara

Jawaban:

4

JavaScript (ES6), 209 byte

Berhasil, tetapi kemungkinan besar akan mencapai batas StackExchange API dengan sangat cepat. Mungkin perlu beberapa saat untuk menampilkan tautan, karena memeriksa secara acak untuk pertanyaan yang valid.

_=>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
sumber
OP mengatakan bahwa semua pertanyaan yang sesuai dengan persyaratan harus memiliki kesempatan untuk dipilih secara acak.
seshoumara
@seshoumara harus diperbaiki sekarang.
Tom
Simpan 4 byte dengan menjatuhkan versi API dari URL.
Shaggy
Mendapat codegolf.stackexchange.com/questions/173/… yang tidak valid
sergiol
Dapat mengonfirmasi bahwa ini menghasilkan tip juga ...
FlipTack
2

Python 3, 452 339 byte

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

Sedikit tidak enak dipandang dan tidak terlalu golf-y, tapi saya tidak tahu cara yang lebih baik untuk melakukannya. Karena ini kurang lebih memaksa API, Anda akan menghabiskan kuota Anda dengan cepat dan mulai mendapatkan kesalahan, tetapi setelah beberapa jam itu akan bekerja lagi.

EDIT: Disimpan 113 byte dengan menghapus beberapa hal yang tidak perlu, terima kasih kepada NoOneIsHere.

Lirik
sumber
Anda hanya menggunakan lsekali, jadi itu tidak perlu.
NoOneIsHere
Itu benar. Saya melakukan itu sehingga saya bisa mencetak tautan setelahnya apakah itu valid, tetapi yang mencetak tautan API bukan yang normal. Terima kasih sudah mengingatkan saya.
LyricLy
Anda juga dapat online trydan mungkin except.
NoOneIsHere
Itu juga benar. Terima kasih lagi.
LyricLy
Senang untuk membantu. Pad
NoOneIsHere
1

SEDE SQL: 79 byte

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

Ada 2 tangkapan. Satu Anda harus menunggu beberapa saat sebelum menjalankan lagi atau Anda memiliki hit cache (sebagai mod mengatakan kepada saya) dan Anda hanya mendapatkan nomor id pertanyaan.

Christopher
sumber
Saya pikir ini valid karena saya tidak malas untuk tidak bisa mengetik
Matius Roh
Iya! Kata-kata Anda terletak pada tantangan Anda
Christopher