Pytania PPCG bez odpowiedzi

9

Ta droga strona StackExchange ma tak wiele wyzwań i wiele dobrych odpowiedzi. Ale co z wyzwaniami, na które nigdy nie odpowiedziano ?

Zadanie

Napisz program lub funkcję, która wydrukuje pseudolosowe otwarte nieodebrane (jak w pytaniu z dokładnie zerowymi odpowiedziami) wyzwanie z PPCG. Wszystkie możliwe wyzwania powinny być tworzone z takim samym prawdopodobieństwem.

Wejście

  • Żadne dane nie zostaną pobrane.

Wynik

  • Musi to być tylko tytuł, tagi i link, które powinny być oddzielone znakami nowej linii.
    • Tytuł musi być dokładnie taki, jak w wyzwaniu.
    • Tagi nie mają ścisłego formatu wyjściowego, ale muszą zawierać wszystkie tagi.
    • Link może zawierać question-nameidentyfikator zapytania i może prowadzić do wyzwania.
  • Może, ale nie musi, być przetłumaczony na format czytelny dla człowieka.
    • & do &
  • Wiodące i końcowe białe znaki są dozwolone.

Przykłady

Encode a steganographic encoder into a package
code-challenge,unicode,steganography
/codegolf/65159/encode-a-steganographic-encoder-into-a-package

Simple predictive keyboard CG
code-golf
/codegolf/76196/simple-predictive-keyboard-cg

Punktacja

Jak to jest , najkrótsza odpowiedź w bajtach wygrywa.

całkowicie ludzki
źródło
8
Naprawdę mam dość wyzwań związanych z wymianą stosów API .
Rɪᴋᴇʀ
3
@Riker Uhm ... dzięki za opinie? Naprawdę nie wiem, dlaczego głosujesz z tego powodu, ale wydaje mi się, że masz więcej mocy.
całkowicie ludzki,
6
Nie głosowałem za tym. Głosowałem za tym, ponieważ myślę, że pytanie jest nudne. Czy zamknięte pytania powinny mieć jednakowe prawdopodobieństwo, że zostaną wypisane?
Rɪᴋᴇʀ
1
Chociaż nie czuję się tak mocno jak @Riker, wydaje się, że ostatnio pojawiło się wiele wyzwań związanych z API; tak bardzo, że udało mi się zablokować korzystanie z API przez ~ 21 godzin !
Kudłaty
4
Co ciekawe, wyzwanie pojawi się podczas testowania, ale kiedy odpowiem na to pytanie, nie pojawi się już podczas testowania.
HyperNeutrino

Odpowiedzi:

7

JavaScript + HTML, 271 250 232 bajtów

Wygląda na to, że możesz użyć Dates jako liczb pseudolosowych. Ukradłem to z odpowiedzi Kudłatego .

(Wykorzystuje tylko około 4 twojego przydziału)

q=[]
g=f=>fetch('//api.stackexchange.com/questions/unanswered?site=codegolf&page='+f).then(r=>r.json().then(j=>(q=[...q,...j.items])^j.has_more?g(f+1):document.write(`<pre>${(q=q[new Date%q.length]).title}
${q.tags}
`+q.link)))
g(1)

Tworzy tablicę q, a następnie wywołuje g(1), która pobiera pierwszą stronę wyników i dodaje ją do q. Następnie, jeśli żądanie to mówi has_more, wywołuje g(f+1), co pobiera następną stronę, aż dotrze do końca i wypisze do dokumentu HTML (co automatycznie usunie scenę z odpowiedzi)

Jeśli nie przejmujemy się wszystkimi pytaniami, na które nie udzielono odpowiedzi, tylko 30 ostatnich (wykorzystuje tylko 1 z Twojego przydziału):

JavaScript + HTML, 213 196 179 bajtów

fetch`//api.stackexchange.com/questions/unanswered?site=codegolf`.then(r=>r.json().then(j=>document.write(`<pre>${(j=j.items[new Date%j.items.length]).title}
${j.tags}
`+j.link)))

Artyer
źródło
Przepraszam, @Artyer, byłem tak skoncentrowany na pracy nad własną odpowiedzią, że nigdy nie zauważyłem, że pokonałeś mnie o kilka minut. Z przyjemnością usunę moją odpowiedź, jeśli uważasz, że jest podobna do twojej.
Kudłaty
@Shaggy W porządku. Napisałem również drugą odpowiedź w tym samym czasie, co ty napisałeś swoją odpowiedź, więc to szczęśliwy zbieg okoliczności, że skończyły się podobnie.
Artyer
Możesz zaoszczędzić kilka bajtów, wpisując na stałe liczbę stron do pobrania. Zamiast tego j.has_more?g(f+1)spróbuj++f<5?g(f)
Kudłaty
Można również wymienić q=q.concat(j.items)się q=[...q,...j.items]. Wygląda na to, że Tags: jest opcjonalny, więc możesz to również upuścić. I nie trzeba join q.tags, zostanie on przymuszony do łańcucha, gdy zostanie połączony z łańcuchem. Wreszcie, użycie literału szablonu w finale powinno również zaoszczędzić kilka bajtów.
Kudłaty
@Shaggy Niestety, osiągnąłem limit. Jednak resetuje się po 425 sekundach.
Artyer
6

Python + żądania + json + random + html, 249 239 bajtów

import requests as r,json,random as R,html
j=R.choice(json.loads(r.get('http://api.stackexchange.com/questions/no-answers?site=codegolf').text)['items'])
print('\n'.join([html.unescape(j['title']),'Tags: '+', '.join(j['tags']),j['link']]))

Okazało się dłużej, niż bym chciał.

-10 bajtów dzięki @totallyhuman przy użyciu R.choicezamiast R.shufflepierwszego elementu.

HyperNeutrino
źródło
Czy możesz zaoszczędzić kilka bajtów, używając random.shuffle?
całkowicie ludzki,
... Poczekaj, czy nawet lepiej random.choice()?
całkowicie ludzki,
1
@ totallyhuman Zmiana nazwy inpurt faktycznie nie robi żadnej różnicy w liczbie bajtów: P Ale dziękuję za .choice()!
HyperNeutrino
Nie potrzebujesz biblioteki json, użyj r.get(url).json()zamiast niej
ovs
To nie dotyczy has_more. Wybiera tylko losowo z pierwszych 30.
Artyer
0

Bash 255 232 bajty

a="api.stackexchange.com/questions/";b="?site=codegolf";c=$(w3m $a"unanswered"$b"&filter=total"|tr -cd 0-9);w3m $a"no-answers"$b"&pagesize=1&page="$((RANDOM%c))|jq -r ".items[0]|.title,(.tags|join(\", \")),.link"|recode html..utf-8

Wygląda na to, że zwracane są błędne wyniki dla sum w przypadku braku odpowiedzi / braku odpowiedzi. Ogólny pomysł - uzyskaj sumę, niż zdobądź losową stronę z jednym przedmiotem.

Bash 174 153 bajty

w3m api.stackexchange.com/questions/no-answers?site=codegolf|jq -r ".items[$RANDOM%(.items|length)]|.title,(.tags|join(\", \")),.link"|recode html..utf-8

Wybiera jedno losowe pytanie z ostatnich 30, a nie ze wszystkich pytań. Działa z wiersza poleceń. Wymagane curl w3m, jq i recode.

wynik:

Tips for golfing in Charcoal
code-golf, tips
/codegolf/117269/tips-for-golfing-in-charcoal
użytkownik1516873
źródło
Jestem pewien, że musisz wybierać spośród nich wszystkich. Ale i tak witamy w PPCG!
NoOneIsHere